From 62796be35e6e768147aab70ba0beeb94c058c714 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Sun, 8 Feb 2026 15:43:02 +0100 Subject: WIP (continue in UnMonoid) --- src/CHAD/AST.hs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/CHAD/AST.hs') diff --git a/src/CHAD/AST.hs b/src/CHAD/AST.hs index 3f6dfc4..bb14218 100644 --- a/src/CHAD/AST.hs +++ b/src/CHAD/AST.hs @@ -129,6 +129,9 @@ data Expr x env t where EPlus :: x t -> SMTy t -> Expr x env t -> Expr x env t -> Expr x env t EOneHot :: x t -> SMTy t -> SAcPrj p t a -> Expr x env (AcIdxS p t) -> Expr x env a -> Expr x env t + EIdxPair :: x (TIdxPair n t) -> SNat n -> Expr x env (Tup (Replicate n TIx)) -> Expr x env t -> Expr x env (TIdxPair n t) + EUnIdxPair :: x (TPair (Tup (Replicate n TIx)) t) -> Expr x env (TIdxPair n t) -> Expr x env (TPair (Tup (Replicate n TIx)) t) + -- interface of abstract monoidal types ELNil :: x (TLEither a b) -> STy a -> STy b -> Expr x env (TLEither a b) ELInl :: x (TLEither a b) -> STy b -> Expr x env a -> Expr x env (TLEither a b) @@ -601,6 +604,9 @@ makeZeroInfo = \ty reference -> ELet ext reference $ go ty (EVar ext (fromSMTy t go SMTMaybe{} _ = ENil ext go (SMTArr _ t) e = emap (go t (EVar ext (fromSMTy t) IZ)) e go SMTScal{} _ = ENil ext + go (SMTIdxPair _ t) e = + eunPair (EUnIdxPair ext e) $ \_ e1 e2 -> + EPair ext e1 (go t e2) splitSparsePair :: -- given a sparsity -- cgit v1.2.3-70-g09d2