View on GitHub
File Changes
    , selfData
    , unroll
    , fix
+
    , fixAndType
+
    , fixBy
+
    , fixByAndType
    , fixN
+
    , fixNAndType
    , FunctionDef (..)
    , getMutualFixOf
+
    , getSingleFixOf
    ) where

                      
import           PlutusPrelude
--
-- See @plutus/runQuote $ docs/fomega/[email protected] for details.
fix :: TermLike term TyName Name => term ()
-
fix = runQuote $ do
+
fix = fst fixAndType
+

                      
+
fixAndType :: TermLike term TyName Name => (term (), Type TyName ())
+
fixAndType = runQuote $ do
    let RecursiveType self wrapSelf = selfData
    a <- freshTyName () "a"
    b <- freshTyName () "b"
    let funAB = TyFun () (TyVar () a) $ TyVar () b
        unrollFunAB = tyInst () unroll funAB
    let selfFunAB = TyApp () self funAB
-
    return
-
        . tyAbs () a (Type ())
-
        . tyAbs () b (Type ())
-
        . lamAbs () f (TyFun () funAB funAB)
-
        . apply () unrollFunAB
-
        . wrapSelf [funAB]
-
        . lamAbs () s selfFunAB
-
        . lamAbs () x (TyVar () a)
-
        $ mkIterApp () (var () f)
-
          [ apply () unrollFunAB $ var () s
-
          , var () x
-
          ]
+
    let fixTerm =
+
            tyAbs () a (Type ())
+
            . tyAbs () b (Type ())
+
            . lamAbs () f (TyFun () funAB funAB)
+
            . apply () unrollFunAB
+
            . wrapSelf [funAB]
+
            . lamAbs () s selfFunAB
+
            . lamAbs () x (TyVar () a)
+
            $ mkIterApp () (var () f)
+
            [ apply () unrollFunAB $ var () s
+
            , var () x
+
            ]
+
    let fixType =
+
            TyForall () a (Type ())
+
            . TyForall () b (Type ())
+
            $ TyFun () (TyFun () funAB funAB) funAB
+
    pure (fixTerm, fixType)
+

                      

                      
-- | A type that looks like a transformation.
--
-- >     ((F ~> Id) -> (F ~> Id)) ->
-- >     ((F ~> F) -> (F ~> Id))
fixBy :: TermLike term TyName Name => term ()
-
fixBy = runQuote $ do
+
fixBy = fst fixByAndType
+

                      
+
fixByAndType :: TermLike term TyName Name => (term (), Type TyName ())
+
fixByAndType = runQuote $ do
    f <- freshTyName () "F"

                      
    -- by : (F ~> Id) -> (F ~> Id)
        nt2 <- natTransId (TyVar () f)
        pure $ TyFun () nt1 nt2

                      
+
    resTy <- do
+
        nt1 <- natTrans (TyVar () f) (TyVar () f)
+
        nt2 <- natTransId (TyVar () f)
+
        pure $ TyFun () nt1 nt2
+

                      
    -- instantiatedFix = fix {F ~> F} {F ~> Id}
    instantiatedFix <- do
        nt1 <- natTrans (TyVar () f) (TyVar () f)
                lamAbs () fq fqTy $
                apply () (tyInst () (apply () (var () recc) (var () h)) (TyVar () q)) $
                apply () (tyInst () (var () h) (TyVar () q)) (var () fq)
-
    pure $
-
        tyAbs () f (KindArrow () (Type ()) (Type ())) $
-
        lamAbs () by byTy $
-
        apply () instantiatedFix $
-
        lamAbs () recc reccTy $
-
        lamAbs () h hty $
-
        tyAbs () r (Type ()) $
-
        lamAbs () fr frTy $
-
        apply () (tyInst () inner (TyVar () r)) (var () fr)
-

                      
-
-- | Make a @[email protected] fixpoint combinator, along with its type.
+
    let fixByTerm =
+
            tyAbs () f (KindArrow () (Type ()) (Type ())) $
+
            lamAbs () by byTy $
+
            apply () instantiatedFix $
+
            lamAbs () recc reccTy $
+
            lamAbs () h hty $
+
            tyAbs () r (Type ()) $
+
            lamAbs () fr frTy $
+
            apply () (tyInst () inner (TyVar () r)) (var () fr)
+
    let fixByType =
+
            TyForall () f (KindArrow () (Type ()) (Type ())) $
+
            TyFun () byTy resTy
+
    pure (fixByTerm, fixByType)
+

                      
+

                      
+
-- | Make a @[email protected] fixpoint combinator.
--
-- > FixN n :
-- >     forall A1 B1 ... An Bn :: * .
-- >         (An -> Bn) ->
-- >         Q) ->
-- >     (forall R :: * . ((A1 -> B1) -> ... (An -> Bn) -> R) -> R)
-
fixN :: TermLike term TyName Name => Integer -> (term (), Type TyName ())
-
fixN n = runQuote $ do
+
fixN :: TermLike term TyName Name => Integer -> term () -> term ()
+
fixN n fixByTerm = fst (fixNAndType n fixByTerm)
+

                      
+
fixNAndType :: TermLike term TyName Name => Integer -> term () -> (term (), Type TyName ())
+
fixNAndType n fixByTerm = runQuote $ do
    -- the list of pairs of A and B types
    asbs <- replicateM (fromIntegral n) $ do
        a <- freshTyName () "a"
    -- instantiatedFix = fixBy { \X :: * -> (A1 -> B1) -> ... -> (An -> Bn) -> X }
    instantiatedFix <- do
        x <- freshTyName () "X"
-
        pure $ tyInst () fixBy (TyLam () x (Type ()) (funTysTo (TyVar () x)))
+
        pure $ tyInst () fixByTerm (TyLam () x (Type ()) (funTysTo (TyVar () x)))

                      
    -- f : forall Q :: * . ((A1 -> B1) -> ... -> (An -> Bn) -> Q) -> (A1 -> B1) -> ... -> (An -> Bn) -> Q)
    f <- freshName () "f"
              ]
    pure (fixNTerm, fixNType)

                      
+
-- | Get the fixed-point of a single recursive function.
+
getSingleFixOf
+
    :: (TermLike term TyName Name)
+
    => ann -> term ann -> FunctionDef term TyName Name ann -> term ann
+
getSingleFixOf ann fix1 [email protected]{_functionDefType=(FunctionType _ dom cod)} =
+
    let instantiatedFix = mkIterInst ann fix1 [dom, cod]
+
        abstractedBody = mkIterLamAbs [functionDefVarDecl fun] $ _functionDefTerm fun
+
    in apply ann instantiatedFix abstractedBody
+

                      
-- | Get the fixed-point of a list of mutually recursive functions.
--
-- > MutualFixOf _ fixN [ FunctionDef _ fN1 (FunctionType _ a1 b1) f1
                  , plcTypeFile "Self"   $ _recursiveType selfData
                  , plcTermFile "Unroll" unroll
                  , plcTermFile "Fix"    fix
-
                  , plcTermFile "Fix2"   $ (fst $ fixN 2)
+
                  , plcTermFile "Fix2"   $ fixN 2 fixBy
                  ]
              , treeFolderContents "Integer"
                  [ plcTermFile "SuccInteger" succInteger
import           Control.Lens.Indexed      (ifor, itraverse)
import           Data.Traversable

                      
-
-- | A Plutus Core tuple.
+
-- | A Plutus Core (Scott-encoded) tuple.
data Tuple term ann where
    Tuple :: TermLike term TyName Name =>
        { _tupleElementTypes :: [Type TyName ann] -- ^ The types of elements of a tuple.
    evenF <- FunctionDef () evenn (FunctionType () nat bool) <$> eoFunc true oddd
    oddF  <- FunctionDef () oddd  (FunctionType () nat bool) <$> eoFunc false evenn

                      
-
    getMutualFixOf () (fst $ fixN 2) [evenF, oddF]
+
    getMutualFixOf () (fixN 2 fixBy) [evenF, oddF]

                      
even :: Term TyName Name ()
even = runQuote $ tupleTermAt () 0 evenAndOdd
            LamAbs () t listNat $
            Apply () (Var () evenn) (Var () t)

                      
-
    getMutualFixOf () (fst $ fixN 2) [evenF, oddF]
+
    getMutualFixOf () (fixN 2 fixBy) [evenF, oddF]

                      
evenList :: Term TyName Name ()
evenList = runQuote $ tupleTermAt () 0 evenAndOddList
                                              , defineType
                                              , defineDatatype
                                              , recordAlias
-
                                              , lookupType
                                              , lookupTerm
+
                                              , lookupOrDefineTerm
+
                                              , lookupType
+
                                              , lookupOrDefineType
                                              , lookupConstructors
                                              , lookupDestructor) where

                      
recordAlias :: forall key ann m . MonadDefs key ann m => key -> m ()
recordAlias name = liftDef @key @ann $ DefT $ modify $ over aliases (Set.insert name)

                      
+
lookupTerm :: (MonadDefs key ann m) => ann -> key -> m (Maybe (Term TyName Name ann))
+
lookupTerm x name = do
+
    DefState{_termDefs=ds,_aliases=as} <- liftDef $ DefT get
+
    pure $ case Map.lookup name ds of
+
        Just (def, _) | not (Set.member name as) -> Just $ mkVar x $ PLC.defVar def
+
        _                                        -> Nothing
+

                      
+
lookupOrDefineTerm :: (MonadDefs key ann m) => ann -> key -> m (TermDefWithStrictness ann, Set.Set key) -> m (Term TyName Name ann)
+
lookupOrDefineTerm x name mdef = do
+
    mTerm <- lookupTerm x name
+
    case mTerm of
+
        Just t -> pure t
+
        Nothing -> do
+
            (def, deps) <- mdef
+
            defineTerm name def deps
+
            pure $ mkVar x $ PLC.defVar def
+

                      
lookupType :: (MonadDefs key ann m) => ann -> key -> m (Maybe (Type TyName ann))
lookupType x name = do
    DefState{_typeDefs=tys, _datatypeDefs=dtys, _aliases=as} <- liftDef $ DefT get
            Just (def, _) -> Just $ mkTyVar x $ PLC.defVar def
            Nothing       -> Nothing

                      
-
lookupTerm :: (MonadDefs key ann m) => ann -> key -> m (Maybe (Term TyName Name ann))
-
lookupTerm x name = do
-
    DefState{_termDefs=ds,_aliases=as} <- liftDef $ DefT get
-
    pure $ case Map.lookup name ds of
-
        Just (def, _) | not (Set.member name as) -> Just $ mkVar x $ PLC.defVar def
-
        _                                        -> Nothing
+
lookupOrDefineType :: (MonadDefs key ann m) => ann -> key -> m (TypeDef TyName ann, Set.Set key) -> m (Type TyName ann)
+
lookupOrDefineType x name mdef = do
+
    mTy <- lookupType x name
+
    case mTy of
+
        Just ty -> pure ty
+
        Nothing -> do
+
            (def, deps) <- mdef
+
            defineType name def deps
+
            pure $ mkTyVar x $ PLC.defVar def

                      
lookupConstructors :: (MonadDefs key ann m) => ann -> key -> m (Maybe [Term TyName Name ann])
lookupConstructors x name = do
import           Control.Lens                           hiding (Strict)

                      
import           Data.List
+
import           Data.List.NonEmpty                     hiding (partition, reverse)

                      
{- Note [Extra definitions while compiling let-bindings]
The let-compiling passes can generate some additional definitions, so we use the
    binds <- forM bs $ \case
        TermBind _ Strict vd rhs -> pure $ PIR.Def vd rhs
        _ -> lift $ getEnclosing >>= \p -> throwing _Error $ CompilationError p "Internal error: type binding in term binding group"
-
    compileRecTerms body binds
+
    case nonEmpty binds of
+
        Just tbs -> compileRecTerms body tbs
+
        Nothing  -> pure body
compileRecTermBindings _ body bs = lift $ getEnclosing >>= \p -> pure $ Let p Rec bs body

                      
compileRecTypeBindings :: Compiling m e a => LetKind -> PIRTerm a -> [Binding TyName Name (Provenance a)] -> m (PIRTerm a)
import           Control.Monad.Error.Lens
import           Control.Monad.Trans

                      
+
import           Data.List.NonEmpty                         hiding (length)
+
import qualified Data.Set                                   as Set
+

                      
import qualified Language.PlutusCore                        as PLC
import qualified Language.PlutusCore.MkPlc                  as PLC
import           Language.PlutusCore.Quote
compileRecTerms
    :: Compiling m e a
    => PIRTerm a
-
    -> [TermDef TyName Name (Provenance a)]
+
    -> NonEmpty (TermDef TyName Name (Provenance a))
    -> DefT SharedName (Provenance a) m (PIRTerm a)
compileRecTerms body bs = do
    p <- lift getEnclosing
    fixpoint <- mkFixpoint bs
-
    Tuple.bindTuple p (PIR.varDeclName . PIR.defVar <$> bs) fixpoint body
+
    Tuple.bindTuple p (PIR.varDeclName . PIR.defVar <$> toList bs) fixpoint body

                      
-- | Given a list of var decls, create a tuples of values that computes their mutually recursive fixpoint.
mkFixpoint
    :: forall m e a . Compiling m e a
-
    => [TermDef TyName Name (Provenance a)]
+
    => NonEmpty (TermDef TyName Name (Provenance a))
    -> DefT SharedName (Provenance a) m (Tuple.Tuple (Term TyName Name) (Provenance a))
mkFixpoint bs = do
    p0 <- lift getEnclosing
            Nothing  -> lift $ throwing _Error $ CompilationError (PLC.typeAnn ty) "Recursive values must be of function type"

                      
    -- See Note [Extra definitions while compiling let-bindings]
-
    let arity = fromIntegral $ length funs
-
        key = FixpointCombinator arity
-
    fixN <- do
-
        maybeFix <- lookupTerm p0 key
-
        case maybeFix of
-
            Just f -> pure f
-
            Nothing -> do
-
                name <- liftQuote $ toProgramName key
-
                let (fixNTerm, fixNType) = Function.fixN arity
-
                    var :: PLC.VarDecl TyName Name (Provenance a)
-
                    var = PLC.VarDecl NoProvenance (NoProvenance <$ name) (NoProvenance <$ fixNType)
-
                defineTerm key (PLC.Def var (NoProvenance <$ fixNTerm, Strict)) mempty
-

                      
-
                pure $ PIR.mkVar p0 var
-

                      
-
    liftQuote $ Function.getMutualFixOf p0 fixN funs
+
    let
+
        arity = fromIntegral $ length funs
+
        fixByKey = FixBy
+
        fixNKey = FixpointCombinator arity
+

                      
+
    let mkFixByDef = do
+
          name <- liftQuote $ toProgramName fixByKey
+
          let (fixByTerm, fixByType) = Function.fixByAndType
+
          pure (PLC.Def (PLC.VarDecl NoProvenance (NoProvenance <$ name) (NoProvenance <$ fixByType)) (NoProvenance <$ fixByTerm, Strict), mempty)
+
    fixBy <- lookupOrDefineTerm p0 fixByKey mkFixByDef
+

                      
+
    let mkFixNDef = do
+
          name <- liftQuote $ toProgramName fixNKey
+
          let ((fixNTerm, fixNType), fixNDeps) =
+
                  if arity == 1
+
                  then (Function.fixAndType, mempty)
+
                  -- fixN depends on fixBy
+
                  else (Function.fixNAndType arity (void fixBy), Set.singleton fixByKey)
+
          pure (PLC.Def (PLC.VarDecl NoProvenance (NoProvenance <$ name) (NoProvenance <$ fixNType)) (NoProvenance <$ fixNTerm, Strict), fixNDeps)
+
    fixN <- lookupOrDefineTerm p0 fixNKey mkFixNDef
+

                      
+
    liftQuote $ case funs of
+
        -- Takes a list of function defs and function bodies and turns them into a Scott-encoded tuple, which
+
        -- happens to be exactly what we want
+
        f :| [] -> Tuple.getSpineToTuple p0 [(PLC.functionDefToType f, Function.getSingleFixOf p0 fixN f)]
+
        f :| fs -> Function.getMutualFixOf p0 fixN (f:fs)

                      
-- | We generate some shared definitions compilation, this datatype
-- defines the "keys" for those definitions.
-
data SharedName = FixpointCombinator Integer deriving (Show, Eq, Ord)
+
data SharedName =
+
    FixpointCombinator Integer
+
    | FixBy
+
    deriving (Show, Eq, Ord)

                      
toProgramName :: SharedName -> Quote (PLC.Name ())
toProgramName (FixpointCombinator n) = freshName () ("fix" <> T.pack (show n))
+
toProgramName FixBy                  = freshName () "fixBy"
recursion = testNested "recursion"
    [ goldenPlcFromPir term "even3"
    , goldenEvalPir term "even3Eval"
+
    , goldenPlcFromPir term "stupidZero"
    , goldenPlcFromPir term "mutuallyRecursiveValues"
    ]

                      
(program 1.0.0
  [
    (lam
-
      fix2_i0
-
      (all a_i0 (type) (all b_i0 (type) (all a_i0 (type) (all b_i0 (type) (fun (all Q_i0 (type) (fun (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) Q_i1)) (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) Q_i1)))) (all R_i0 (type) (fun (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) R_i1)) R_i1)))))))
+
      fixBy_i0
+
      (all F_i0 (fun (type) (type)) (fun (fun (all Q_i0 (type) (fun [F_i2 Q_i1] Q_i1)) (all Q_i0 (type) (fun [F_i2 Q_i1] Q_i1))) (fun (all Q_i0 (type) (fun [F_i2 Q_i1] [F_i2 Q_i1])) (all Q_i0 (type) (fun [F_i2 Q_i1] Q_i1)))))
      [
-
        [
+
        (lam
+
          fix2_i0
+
          (all a_i0 (type) (all b_i0 (type) (all a_i0 (type) (all b_i0 (type) (fun (all Q_i0 (type) (fun (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) Q_i1)) (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) Q_i1)))) (all R_i0 (type) (fun (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) R_i1)) R_i1)))))))
          [
-
            {
-
              (abs
-
                Nat_i0
-
                (type)
-
                (lam
-
                  Zero_i0
-
                  Nat_i2
-
                  (lam
-
                    Suc_i0
-
                    (fun Nat_i3 Nat_i3)
+
            [
+
              [
+
                {
+
                  (abs
+
                    Nat_i0
+
                    (type)
                    (lam
-
                      match_Nat_i0
-
                      (fun Nat_i4 (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i5 out_Nat_i1) out_Nat_i1))))
-
                      [
-
                        [
+
                      Zero_i0
+
                      Nat_i2
+
                      (lam
+
                        Suc_i0
+
                        (fun Nat_i3 Nat_i3)
+
                        (lam
+
                          match_Nat_i0
+
                          (fun Nat_i4 (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i5 out_Nat_i1) out_Nat_i1))))
                          [
-
                            {
-
                              (abs
-
                                Bool_i0
-
                                (type)
-
                                (lam
-
                                  True_i0
-
                                  Bool_i2
-
                                  (lam
-
                                    False_i0
-
                                    Bool_i3
+
                            [
+
                              [
+
                                {
+
                                  (abs
+
                                    Bool_i0
+
                                    (type)
                                    (lam
-
                                      match_Bool_i0
-
                                      (fun Bool_i4 (all out_Bool_i0 (type) (fun out_Bool_i1 (fun out_Bool_i1 out_Bool_i1))))
-
                                      [
+
                                      True_i0
+
                                      Bool_i2
+
                                      (lam
+
                                        False_i0
+
                                        Bool_i3
                                        (lam
-
                                          three_i0
-
                                          Nat_i9
+
                                          match_Bool_i0
+
                                          (fun Bool_i4 (all out_Bool_i0 (type) (fun out_Bool_i1 (fun out_Bool_i1 out_Bool_i1))))
                                          [
                                            (lam
-
                                              tup_i0
-
                                              (all r_i0 (type) (fun (fun (fun Nat_i11 Bool_i7) (fun (fun Nat_i11 Bool_i7) r_i1)) r_i1))
+
                                              three_i0
+
                                              Nat_i9
                                              [
                                                (lam
-
                                                  even_i0
-
                                                  (fun Nat_i11 Bool_i7)
-
                                                  [ even_i1 three_i3 ]
-
                                                )
-
                                                [
-
                                                  {
-
                                                    tup_i1 (fun Nat_i10 Bool_i6)
-
                                                  }
-
                                                  (lam
-
                                                    arg_0_i0
-
                                                    (fun Nat_i11 Bool_i7)
+
                                                  tup_i0
+
                                                  (all r_i0 (type) (fun (fun (fun Nat_i11 Bool_i7) (fun (fun Nat_i11 Bool_i7) r_i1)) r_i1))
+
                                                  [
                                                    (lam
-
                                                      arg_1_i0
-
                                                      (fun Nat_i12 Bool_i8)
-
                                                      arg_0_i2
+
                                                      even_i0
+
                                                      (fun Nat_i11 Bool_i7)
+
                                                      [ even_i1 three_i3 ]
                                                    )
-
                                                  )
-
                                                ]
-
                                              ]
-
                                            )
-
                                            [
-
                                              {
-
                                                {
+
                                                    [
+
                                                      {
+
                                                        tup_i1
+
                                                        (fun Nat_i10 Bool_i6)
+
                                                      }
+
                                                      (lam
+
                                                        arg_0_i0
+
                                                        (fun Nat_i11 Bool_i7)
+
                                                        (lam
+
                                                          arg_1_i0
+
                                                          (fun Nat_i12 Bool_i8)
+
                                                          arg_0_i2
+
                                                        )
+
                                                      )
+
                                                    ]
+
                                                  ]
+
                                                )
+
                                                [
                                                  {
-
                                                    { fix2_i10 Nat_i9 } Bool_i5
+
                                                    {
+
                                                      {
+
                                                        { fix2_i10 Nat_i9 }
+
                                                        Bool_i5
+
                                                      }
+
                                                      Nat_i9
+
                                                    }
+
                                                    Bool_i5
                                                  }
-
                                                  Nat_i9
-
                                                }
-
                                                Bool_i5
-
                                              }
-
                                              (abs
-
                                                Q_i0
-
                                                (type)
-
                                                (lam
-
                                                  choose_i0
-
                                                  (fun (fun Nat_i11 Bool_i7) (fun (fun Nat_i11 Bool_i7) Q_i2))
-
                                                  (lam
-
                                                    even_i0
-
                                                    (fun Nat_i12 Bool_i8)
+
                                                  (abs
+
                                                    Q_i0
+
                                                    (type)
                                                    (lam
-
                                                      odd_i0
-
                                                      (fun Nat_i13 Bool_i9)
-
                                                      [
-
                                                        [
-
                                                          choose_i3
-
                                                          (lam
-
                                                            n_i0
-
                                                            Nat_i14
-
                                                            [
-
                                                              [
-
                                                                {
-
                                                                  [
-
                                                                    match_Nat_i11
-
                                                                    n_i1
-
                                                                  ]
-
                                                                  Bool_i10
-
                                                                }
-
                                                                True_i9
-
                                                              ]
-
                                                              (lam
-
                                                                pred_i0
-
                                                                Nat_i15
-
                                                                [
-
                                                                  odd_i3 pred_i1
-
                                                                ]
-
                                                              )
-
                                                            ]
-
                                                          )
-
                                                        ]
+
                                                      choose_i0
+
                                                      (fun (fun Nat_i11 Bool_i7) (fun (fun Nat_i11 Bool_i7) Q_i2))
+
                                                      (lam
+
                                                        even_i0
+
                                                        (fun Nat_i12 Bool_i8)
                                                        (lam
-
                                                          n_i0
-
                                                          Nat_i14
+
                                                          odd_i0
+
                                                          (fun Nat_i13 Bool_i9)
                                                          [
                                                            [
-
                                                              {
+
                                                              choose_i3
(abs
-
  out_Bool_90
+
  out_Bool_96
  (type)
-
  (lam case_True_91 out_Bool_90 (lam case_False_92 out_Bool_90 case_False_92))
+
  (lam case_True_97 out_Bool_96 (lam case_False_98 out_Bool_96 case_False_98))
)
\ No newline at end of file
(program 1.0.0
  [
    (lam
-
      fix2_i0
-
      (all a_i0 (type) (all b_i0 (type) (all a_i0 (type) (all b_i0 (type) (fun (all Q_i0 (type) (fun (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) Q_i1)) (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) Q_i1)))) (all R_i0 (type) (fun (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) R_i1)) R_i1)))))))
+
      fixBy_i0
+
      (all F_i0 (fun (type) (type)) (fun (fun (all Q_i0 (type) (fun [F_i2 Q_i1] Q_i1)) (all Q_i0 (type) (fun [F_i2 Q_i1] Q_i1))) (fun (all Q_i0 (type) (fun [F_i2 Q_i1] [F_i2 Q_i1])) (all Q_i0 (type) (fun [F_i2 Q_i1] Q_i1)))))
      [
        (lam
-
          tup_i0
-
          (all r_i0 (type) (fun (fun (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1))) (fun (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1))) r_i1)) r_i1))
+
          fix2_i0
+
          (all a_i0 (type) (all b_i0 (type) (all a_i0 (type) (all b_i0 (type) (fun (all Q_i0 (type) (fun (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) Q_i1)) (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) Q_i1)))) (all R_i0 (type) (fun (fun (fun a_i5 b_i4) (fun (fun a_i3 b_i2) R_i1)) R_i1)))))))
          [
            (lam
-
              x_i0
-
              (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
-
              [ x_i1 (abs a_i0 (type) (lam x_i0 a_i2 x_i1)) ]
+
              tup_i0
+
              (all r_i0 (type) (fun (fun (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1))) (fun (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1))) r_i1)) r_i1))
+
              [
+
                (lam
+
                  x_i0
+
                  (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
                  [ x_i1 (abs a_i0 (type) (lam x_i0 a_i2 x_i1)) ]
+
                )
+
                [
+
                  {
+
                    tup_i1
+
                    (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
                  }
+
                  (lam
+
                    arg_0_i0
+
                    (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
                    (lam
+
                      arg_1_i0
+
                      (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
                      arg_0_i2
+
                    )
+
                  )
+
                ]
+
              ]
            )
            [
              {
-
                tup_i1
-
                (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
                {
+
                  {
+
                    { fix2_i1 (all a_i0 (type) (fun a_i1 a_i1)) }
+
                    (all a_i0 (type) (fun a_i1 a_i1))
+
                  }
+
                  (all a_i0 (type) (fun a_i1 a_i1))
+
                }
+
                (all a_i0 (type) (fun a_i1 a_i1))
              }
-
              (lam
-
                arg_0_i0
-
                (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
              (abs
+
                Q_i0
+
                (type)
                (lam
-
                  arg_1_i0
-
                  (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
-
                  arg_0_i2
+
                  choose_i0
+
                  (fun (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1))) (fun (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1))) Q_i2))
+
                  (lam
+
                    x_i0
+
                    (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
                    (lam
+
                      y_i0
+
                      (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
                      [
+
                        [
+
                          choose_i3
+
                          (lam
+
                            arg_i0
+
                            (all a_i0 (type) (fun a_i1 a_i1))
+
                            [ y_i2 (abs a_i0 (type) (lam x_i0 a_i2 x_i1)) ]
+
                          )
+
                        ]
+
                        (lam
+
                          arg_i0
+
                          (all a_i0 (type) (fun a_i1 a_i1))
+
                          (abs a_i0 (type) (lam x_i0 a_i2 x_i1))
+
                        )
+
                      ]
+
                    )
+
                  )
                )
              )
            ]
          ]
        )
-
        [
-
          {
-
            {
-
              {
-
                { fix2_i1 (all a_i0 (type) (fun a_i1 a_i1)) }
-
                (all a_i0 (type) (fun a_i1 a_i1))
-
              }
-
              (all a_i0 (type) (fun a_i1 a_i1))
-
            }
-
            (all a_i0 (type) (fun a_i1 a_i1))
-
          }
+
        (abs
+
          a_i0
+
          (type)
          (abs
-
            Q_i0
+
            b_i0
            (type)
-
            (lam
-
              choose_i0
-
              (fun (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1))) (fun (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1))) Q_i2))
-
              (lam
-
                x_i0
-
                (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
            (abs
+
              a_i0
+
              (type)
+
              (abs
+
                b_i0
+
                (type)
                (lam
-
                  y_i0
-
                  (fun (all a_i0 (type) (fun a_i1 a_i1)) (all a_i0 (type) (fun a_i1 a_i1)))
+
                  f_i0
+
                  (all Q_i0 (type) (fun (fun (fun a_i6 b_i5) (fun (fun a_i4 b_i3) Q_i1)) (fun (fun a_i6 b_i5) (fun (fun a_i4 b_i3) Q_i1))))
                  [
                    [
-
                      choose_i3
+
                      {
+
                        fixBy_i6
+
                        (lam X_i0 (type) (fun (fun a_i6 b_i5) (fun (fun a_i4 b_i3) X_i1)))
+
                      }
                      (lam
-
                        arg_i0
-
                        (all a_i0 (type) (fun a_i1 a_i1))
-
                        [ y_i2 (abs a_i0 (type) (lam x_i0 a_i2 x_i1)) ]
+
                        k_i0
+
                        (all Q_i0 (type) (fun (fun (fun a_i7 b_i6) (fun (fun a_i5 b_i4) Q_i1)) Q_i1))
+
                        (abs
+
                          S_i0
+
                          (type)
+
                          (lam
+
                            h_i0
+
                            (fun (fun a_i8 b_i7) (fun (fun a_i6 b_i5) S_i2))
+
                            [
+
                              [
+
                                h_i1
+
                                (lam
+
                                  x_i0
+
                                  a_i9
+
                                  [
+
                                    { k_i4 b_i8 }
+
                                    (lam
+
                                      f_0_i0
+
                                      (fun a_i10 b_i9)
+
                                      (lam
+
                                        f_1_i0 (fun a_i9 b_i8) [ f_0_i2 x_i3 ]
+
                                      )
+
                                    )
+
                                  ]
+
                                )
+
                              ]
+
                              (lam
+
                                x_i0
+
                                a_i7
+
                                [
+
                                  { k_i4 b_i6 }
+
                                  (lam
+
                                    f_0_i0
+
                                    (fun a_i10 b_i9)
+
                                    (lam f_1_i0 (fun a_i9 b_i8) [ f_1_i1 x_i3 ])
+
                                  )
+
                                ]
+
                              )
+
                            ]
+
                          )
+
                        )
                      )
                    ]
-
                    (lam
-
                      arg_i0
-
                      (all a_i0 (type) (fun a_i1 a_i1))
-
                      (abs a_i0 (type) (lam x_i0 a_i2 x_i1))
-
                    )
+
                    f_i1
                  ]
                )
              )
            )
          )
-
        ]
+
        )
      ]
+
(let (rec)
+
  (datatypebind (datatype
+
      (tyvardecl Nat (type))
+
      -- no arguments
+
      match_Nat
+
      (vardecl Zero Nat)
+
      (vardecl Suc (fun Nat Nat))))
+
(let (nonrec)
+
  (termbind (strict) (vardecl three Nat)
+
      [Suc [Suc [Suc Zero]]])
+
(let (rec)
+
  (termbind (strict) (vardecl stupidZero (fun Nat Nat))
+
      (lam n Nat
+
        [{[match_Nat n] Nat} Zero (lam pred Nat [stupidZero pred])]))
+
  [stupidZero three]
+
)
+
)
+
)
+
)
+
(program 1.0.0
+
  [
+
    (lam
+
      fix1_i0
+
      (all a_i0 (type) (all b_i0 (type) (fun (fun (fun a_i2 b_i1) (fun a_i2 b_i1)) (fun a_i2 b_i1))))
+
      [
+
        [
+
          [
+
            {
+
              (abs
+
                Nat_i0
+
                (type)
+
                (lam
+
                  Zero_i0
+
                  Nat_i2
+
                  (lam
+
                    Suc_i0
+
                    (fun Nat_i3 Nat_i3)
+
                    (lam
+
                      match_Nat_i0
+
                      (fun Nat_i4 (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i5 out_Nat_i1) out_Nat_i1))))
+
                      [
+
                        (lam
+
                          three_i0
+
                          Nat_i5
+
                          [
+
                            (lam
+
                              tup_i0
+
                              (all r_i0 (type) (fun (fun (fun Nat_i7 Nat_i7) r_i1) r_i1))
+
                              [
+
                                (lam
+
                                  stupidZero_i0
+
                                  (fun Nat_i7 Nat_i7)
+
                                  [ stupidZero_i1 three_i3 ]
+
                                )
+
                                [
+
                                  { tup_i1 (fun Nat_i6 Nat_i6) }
+
                                  (lam arg_0_i0 (fun Nat_i7 Nat_i7) arg_0_i1)
+
                                ]
+
                              ]
+
                            )
+
                            (abs
+
                              r_i0
+
                              (type)
+
                              (lam
+
                                f_i0
+
                                (fun (fun Nat_i7 Nat_i7) r_i2)
+
                                [
+
                                  f_i1
+
                                  [
+
                                    { { fix1_i8 Nat_i7 } Nat_i7 }
+
                                    (lam
+
                                      stupidZero_i0
+
                                      (fun Nat_i8 Nat_i8)
+
                                      (lam
+
                                        n_i0
+
                                        Nat_i9
+
                                        [
+
                                          [
+
                                            { [ match_Nat_i6 n_i1 ] Nat_i9 }
+
                                            Zero_i8
+
                                          ]
+
                                          (lam
+
                                            pred_i0
+
                                            Nat_i10
+
                                            [ stupidZero_i3 pred_i1 ]
+
                                          )
+
                                        ]
+
                                      )
+
                                    )
+
                                  ]
+
                                ]
+
                              )
+
                            )
+
                          ]
+
                        )
+
                        [ Suc_i2 [ Suc_i2 [ Suc_i2 Zero_i3 ] ] ]
+
                      ]
+
                    )
+
                  )
+
                )
+
              )
+
              (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1)))))
+
            }
+
            (iwrap
+
              (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]]))
+
              (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1))))
+
              (abs
+
                out_Nat_i0
+
                (type)
+
                (lam
+
                  case_Zero_i0
+
                  out_Nat_i2
+
                  (lam
+
                    case_Suc_i0
+
                    (fun (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1))))) out_Nat_i3)
+
                    case_Zero_i2
+
                  )
+
                )
+
              )
+
            )
+
          ]
+
          (lam
+
            arg_0_i0
+
            (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1)))))
+
            (iwrap
+
              (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]]))
+
              (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1))))
+
              (abs
+
                out_Nat_i0
+
                (type)
+
                (lam
+
                  case_Zero_i0
+
                  out_Nat_i2
+
                  (lam
+
                    case_Suc_i0
+
                    (fun (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1))))) out_Nat_i3)
+
                    [ case_Suc_i1 arg_0_i4 ]
+
                  )
+
                )
+
              )
+
            )
+
          )
+
        ]
+
        (lam
+
          x_i0
+
          (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1)))))
+
          (unwrap x_i1)
+
        )
+
      ]
+
    )
+
    (abs
+
      a_i0
+
      (type)
+
      (abs
+
        b_i0
+
        (type)
+
        (lam
+
          f_i0
+
          (fun (fun a_i3 b_i2) (fun a_i3 b_i2))
+
          [
+
            {
+
              (abs
+
                a_i0
+
                (type)
+
                (lam
+
                  s_i0
+
                  [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) a_i2]
+
                  [ (unwrap s_i1) s_i1 ]
+
                )
+
              )
+
              (fun a_i3 b_i2)
+
            }
+
            (iwrap
+
              (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1)))
+
              (fun a_i3 b_i2)
+
              (lam
+
                s_i0
+
                [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) (fun a_i4 b_i3)]
+
                (lam
+
                  x_i0
+
                  a_i5
+
                  [
+
                    [
+
                      f_i3
+
                      [
+
                        {
+
                          (abs
+
                            a_i0
+
                            (type)
+
                            (lam
+
                              s_i0
+
                              [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) a_i2]
+
                              [ (unwrap s_i1) s_i1 ]
+
                            )
+
                          )
+
                          (fun a_i5 b_i4)
+
                        }
+
                        s_i2
+
                      ]
+
                    ]
+
                    x_i1
+
                  ]
+
                )
+
              )
+
            )
+
          ]
+
        )
+
      )
+
    )
+
  ]
+
)
\ No newline at end of file
  [
    (lam
      fix1_i0
-
      (all a_i0 (type) (all b_i0 (type) (fun (all Q_i0 (type) (fun (fun (fun a_i3 b_i2) Q_i1) (fun (fun a_i3 b_i2) Q_i1))) (all R_i0 (type) (fun (fun (fun a_i3 b_i2) R_i1) R_i1)))))
+
      (all a_i0 (type) (all b_i0 (type) (fun (fun (fun a_i2 b_i1) (fun a_i2 b_i1)) (fun a_i2 b_i1))))
      [
        [
          {
                                                            ]
                                                          ]
                                                        )
-
                                                        [
-
                                                          {
-
                                                            {
-
                                                              fix1_i13
-
                                                              EmptyRose_i5
-
                                                            }
-
                                                            EmptyRose_i5
-
                                                          }
-
                                                          (abs
-
                                                            Q_i0
-
                                                            (type)
-
                                                            (lam
-
                                                              choose_i0
-
                                                              (fun (fun EmptyRose_i7 EmptyRose_i7) Q_i2)
-
                                                              (lam
-
                                                                go_i0
-
                                                                (fun EmptyRose_i8 EmptyRose_i8)
-
                                                                [
-
                                                                  choose_i2
+
                                                        (abs
+
                                                          r_i0
+
                                                          (type)
+
                                                          (lam
+
                                                            f_i0
+
                                                            (fun (fun EmptyRose_i7 EmptyRose_i7) r_i2)
+
                                                            [
+
                                                              f_i1
+
                                                              [
+
                                                                {
+
                                                                  {
+
                                                                    fix1_i15
+
                                                                    EmptyRose_i7
+
                                                                  }
+
                                                                  EmptyRose_i7
+
                                                                }
+
                                                                (lam
+
                                                                  go_i0
+
                                                                  (fun EmptyRose_i8 EmptyRose_i8)
                                                                  (lam
                                                                    x_i0
                                                                    EmptyRose_i9
                                                                      ]
                                                                    ]
                                                                  )
-
                                                                ]
-
                                                              )
-
                                                            )
+
                                                                )
+
                                                              ]
+
                                                            ]
                                                          )
-
                                                        ]
+
                                                        )
                                                      ]
                                                    )
                                                    [
                                                    ]
                                                  ]
                                                )
-
                                                [
-
                                                  {
-
                                                    {
-
                                                      fix1_i11
-
                                                      (fun EmptyRose_i3 EmptyRose_i3)
-
                                                    }
-
                                                    (fun [List_i7 EmptyRose_i3] [List_i7 EmptyRose_i3])
-
                                                  }
-
                                                  (abs
-
                                                    Q_i0
-
                                                    (type)
-
                                                    (lam
-
                                                      choose_i0
-
                                                      (fun (fun (fun EmptyRose_i5 EmptyRose_i5) (fun [List_i9 EmptyRose_i5] [List_i9 EmptyRose_i5])) Q_i2)
-
                                                      (lam
-
                                                        map_i0
-
                                                        (fun (fun EmptyRose_i6 EmptyRose_i6) (fun [List_i10 EmptyRose_i6] [List_i10 EmptyRose_i6]))
-
                                                        [
-
                                                          choose_i2
+
                                                (abs
+
                                                  r_i0
+
                                                  (type)
+
                                                  (lam
+
                                                    f_i0
+
                                                    (fun (fun (fun EmptyRose_i5 EmptyRose_i5) (fun [List_i9 EmptyRose_i5] [List_i9 EmptyRose_i5])) r_i2)
+
                                                    [
+
                                                      f_i1
+
                                                      [
+
                                                        {
+
                                                          {
+
                                                            fix1_i13
+
                                                            (fun EmptyRose_i5 EmptyRose_i5)
+
                                                          }
+
                                                          (fun [List_i9 EmptyRose_i5] [List_i9 EmptyRose_i5])
+
                                                        }
+
                                                        (lam
+
                                                          map_i0
+
                                                          (fun (fun EmptyRose_i6 EmptyRose_i6) (fun [List_i10 EmptyRose_i6] [List_i10 EmptyRose_i6]))
                                                          (lam
                                                            ds_i0
                                                            (fun EmptyRose_i7 EmptyRose_i7)
                                                              ]
                                                            )
                                                          )
-
                                                        ]
-
                                                      )
-
                                                    )
+
                                                        )
+
                                                      ]
+
                                                    ]
                                                  )
-
                                                ]
+
                                                )
                                              ]
                                            )
                                          )
        (type)
        (lam
          f_i0
-
          (all Q_i0 (type) (fun (fun (fun a_i4 b_i3) Q_i1) (fun (fun a_i4 b_i3) Q_i1)))
+
          (fun (fun a_i3 b_i2) (fun a_i3 b_i2))
          [
-
            [
-
              {
-
                (abs
-
                  F_i0
-
                  (fun (type) (type))
-
                  (lam
-
                    by_i0
-
                    (fun (all Q_i0 (type) (fun [F_i3 Q_i1] Q_i1)) (all Q_i0 (type) (fun [F_i3 Q_i1] Q_i1)))
+
            {
+
              (abs
+
                a_i0
+
                (type)
+
                (lam
+
                  s_i0
+
                  [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) a_i2]
+
                  [ (unwrap s_i1) s_i1 ]
+
                )
+
              )
+
              (fun a_i3 b_i2)
+
            }
+
            (iwrap
+
              (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1)))
+
              (fun a_i3 b_i2)
+
              (lam
+
                s_i0
+
                [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) (fun a_i4 b_i3)]
+
                (lam
+
                  x_i0
+
                  a_i5
+
                  [
                    [
-
                      {
+
                      f_i3
+
                      [
                        {
                          (abs
                            a_i0
                            (type)
-
                            (abs
-
                              b_i0
-
                              (type)
-
                              (lam
-
                                f_i0
-
                                (fun (fun a_i3 b_i2) (fun a_i3 b_i2))
-
                                [
-
                                  {
-
                                    (abs
-
                                      a_i0
-
                                      (type)
-
                                      (lam
-
                                        s_i0
-
                                        [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) a_i2]
-
                                        [ (unwrap s_i1) s_i1 ]
-
                                      )
-
                                    )
-
                                    (fun a_i3 b_i2)
-
                                  }
-
                                  (iwrap
-
                                    (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1)))
-
                                    (fun a_i3 b_i2)
-
                                    (lam
-
                                      s_i0
(iwrap
-
  (lam rec_98 (fun (fun (type) (type)) (type)) (lam f_99 (fun (type) (type)) [f_99 [rec_98 f_99]]))
-
  (lam EmptyRose_100 (type) (all out_EmptyRose_101 (type) (fun (fun [List_55 EmptyRose_100] out_EmptyRose_101) out_EmptyRose_101)))
+
  (lam rec_111 (fun (fun (type) (type)) (type)) (lam f_112 (fun (type) (type)) [f_112 [rec_111 f_112]]))
+
  (lam EmptyRose_113 (type) (all out_EmptyRose_114 (type) (fun (fun [List_68 EmptyRose_113] out_EmptyRose_114) out_EmptyRose_114)))
  (abs
-
    out_EmptyRose_102
+
    out_EmptyRose_115
    (type)
    (lam
-
      case_EmptyRose_103
-
      (fun [List_55 (ifix (lam rec_104 (fun (fun (type) (type)) (type)) (lam f_105 (fun (type) (type)) [f_105 [rec_104 f_105]])) (lam EmptyRose_106 (type) (all out_EmptyRose_107 (type) (fun (fun [List_55 EmptyRose_106] out_EmptyRose_107) out_EmptyRose_107))))] out_EmptyRose_102)
+
      case_EmptyRose_116
+
      (fun [List_68 (ifix (lam rec_117 (fun (fun (type) (type)) (type)) (lam f_118 (fun (type) (type)) [f_118 [rec_117 f_118]])) (lam EmptyRose_119 (type) (all out_EmptyRose_120 (type) (fun (fun [List_68 EmptyRose_119] out_EmptyRose_120) out_EmptyRose_120))))] out_EmptyRose_115)
      [
-
        case_EmptyRose_103
+
        case_EmptyRose_116
        (iwrap
-
          (lam List_135 (fun (type) (type)) (lam a_136 (type) (all out_List_137 (type) (fun out_List_137 (fun (fun a_136 (fun [List_135 a_136] out_List_137)) out_List_137)))))
-
          a_128
+
          (lam List_148 (fun (type) (type)) (lam a_149 (type) (all out_List_150 (type) (fun out_List_150 (fun (fun a_149 (fun [List_148 a_149] out_List_150)) out_List_150)))))
+
          a_141
          (abs
-
            out_List_138
+
            out_List_151
            (type)
            (lam
-
              case_Nil_139
-
              out_List_138
+
              case_Nil_152
+
              out_List_151
              (lam
-
                case_Cons_140
-
                (fun a_128 (fun [(lam a_141 (type) (ifix (lam List_142 (fun (type) (type)) (lam a_143 (type) (all out_List_144 (type) (fun out_List_144 (fun (fun a_143 (fun [List_142 a_143] out_List_144)) out_List_144))))) a_141)) a_128] out_List_138))
+
                case_Cons_153
+
                (fun a_141 (fun [(lam a_154 (type) (ifix (lam List_155 (fun (type) (type)) (lam a_156 (type) (all out_List_157 (type) (fun out_List_157 (fun (fun a_156 (fun [List_155 a_156] out_List_157)) out_List_157))))) a_154)) a_141] out_List_151))
                [
                  [
-
                    case_Cons_140
+
                    case_Cons_153
                    (iwrap
-
                      (lam rec_98 (fun (fun (type) (type)) (type)) (lam f_99 (fun (type) (type)) [f_99 [rec_98 f_99]]))
-
                      (lam EmptyRose_100 (type) (all out_EmptyRose_101 (type) (fun (fun [List_55 EmptyRose_100] out_EmptyRose_101) out_EmptyRose_101)))
+
                      (lam rec_111 (fun (fun (type) (type)) (type)) (lam f_112 (fun (type) (type)) [f_112 [rec_111 f_112]]))
+
                      (lam EmptyRose_113 (type) (all out_EmptyRose_114 (type) (fun (fun [List_68 EmptyRose_113] out_EmptyRose_114) out_EmptyRose_114)))
                      (abs
-
                        out_EmptyRose_102
+
                        out_EmptyRose_115
                        (type)
                        (lam
-
                          case_EmptyRose_103
-
                          (fun [List_55 (ifix (lam rec_104 (fun (fun (type) (type)) (type)) (lam f_105 (fun (type) (type)) [f_105 [rec_104 f_105]])) (lam EmptyRose_106 (type) (all out_EmptyRose_107 (type) (fun (fun [List_55 EmptyRose_106] out_EmptyRose_107) out_EmptyRose_107))))] out_EmptyRose_102)
+
                          case_EmptyRose_116
+
                          (fun [List_68 (ifix (lam rec_117 (fun (fun (type) (type)) (type)) (lam f_118 (fun (type) (type)) [f_118 [rec_117 f_118]])) (lam EmptyRose_119 (type) (all out_EmptyRose_120 (type) (fun (fun [List_68 EmptyRose_119] out_EmptyRose_120) out_EmptyRose_120))))] out_EmptyRose_115)
                          [
-
                            case_EmptyRose_103
+
                            case_EmptyRose_116
                            (iwrap
-
                              (lam List_118 (fun (type) (type)) (lam a_119 (type) (all out_List_120 (type) (fun out_List_120 (fun (fun a_119 (fun [List_118 a_119] out_List_120)) out_List_120)))))
-
                              a_117
+
                              (lam List_131 (fun (type) (type)) (lam a_132 (type) (all out_List_133 (type) (fun out_List_133 (fun (fun a_132 (fun [List_131 a_132] out_List_133)) out_List_133)))))
+
                              a_130
                              (abs
-
                                out_List_121
+
                                out_List_134
                                (type)
                                (lam
-
                                  case_Nil_122
-
                                  out_List_121
+
                                  case_Nil_135
+
                                  out_List_134
                                  (lam
-
                                    case_Cons_123
-
                                    (fun a_117 (fun [(lam a_124 (type) (ifix (lam List_125 (fun (type) (type)) (lam a_126 (type) (all out_List_127 (type) (fun out_List_127 (fun (fun a_126 (fun [List_125 a_126] out_List_127)) out_List_127))))) a_124)) a_117] out_List_121))
-
                                    case_Nil_122
+
                                    case_Cons_136
+
                                    (fun a_130 (fun [(lam a_137 (type) (ifix (lam List_138 (fun (type) (type)) (lam a_139 (type) (all out_List_140 (type) (fun out_List_140 (fun (fun a_139 (fun [List_138 a_139] out_List_140)) out_List_140))))) a_137)) a_130] out_List_134))
+
                                    case_Nil_135
                                  )
                                )
                              )
                    )
                  ]
                  (iwrap
-
                    (lam List_135 (fun (type) (type)) (lam a_136 (type) (all out_List_137 (type) (fun out_List_137 (fun (fun a_136 (fun [List_135 a_136] out_List_137)) out_List_137)))))
-
                    a_128
+
                    (lam List_148 (fun (type) (type)) (lam a_149 (type) (all out_List_150 (type) (fun out_List_150 (fun (fun a_149 (fun [List_148 a_149] out_List_150)) out_List_150)))))
+
                    a_141
                    (abs
-
                      out_List_138
+
                      out_List_151
                      (type)
                      (lam
-
                        case_Nil_139
-
                        out_List_138
+
                        case_Nil_152
+
                        out_List_151
                        (lam
-
                          case_Cons_140
-
                          (fun a_128 (fun [(lam a_141 (type) (ifix (lam List_142 (fun (type) (type)) (lam a_143 (type) (all out_List_144 (type) (fun out_List_144 (fun (fun a_143 (fun [List_142 a_143] out_List_144)) out_List_144))))) a_141)) a_128] out_List_138))
+
                          case_Cons_153
+
                          (fun a_141 (fun [(lam a_154 (type) (ifix (lam List_155 (fun (type) (type)) (lam a_156 (type) (all out_List_157 (type) (fun out_List_157 (fun (fun a_156 (fun [List_155 a_156] out_List_157)) out_List_157))))) a_154)) a_141] out_List_151))
                          [
                            [
-
                              case_Cons_140
+
                              case_Cons_153
                              (iwrap
-
                                (lam rec_98 (fun (fun (type) (type)) (type)) (lam f_99 (fun (type) (type)) [f_99 [rec_98 f_99]]))
-
                                (lam EmptyRose_100 (type) (all out_EmptyRose_101 (type) (fun (fun [List_55 EmptyRose_100] out_EmptyRose_101) out_EmptyRose_101)))
+
                                (lam rec_111 (fun (fun (type) (type)) (type)) (lam f_112 (fun (type) (type)) [f_112 [rec_111 f_112]]))
+
                                (lam EmptyRose_113 (type) (all out_EmptyRose_114 (type) (fun (fun [List_68 EmptyRose_113] out_EmptyRose_114) out_EmptyRose_114)))
                                (abs
-
                                  out_EmptyRose_102
+
                                  out_EmptyRose_115
                                  (type)
                                  (lam
-
                                    case_EmptyRose_103
-
                                    (fun [List_55 (ifix (lam rec_104 (fun (fun (type) (type)) (type)) (lam f_105 (fun (type) (type)) [f_105 [rec_104 f_105]])) (lam EmptyRose_106 (type) (all out_EmptyRose_107 (type) (fun (fun [List_55 EmptyRose_106] out_EmptyRose_107) out_EmptyRose_107))))] out_EmptyRose_102)
+
                                    case_EmptyRose_116
+
                                    (fun [List_68 (ifix (lam rec_117 (fun (fun (type) (type)) (type)) (lam f_118 (fun (type) (type)) [f_118 [rec_117 f_118]])) (lam EmptyRose_119 (type) (all out_EmptyRose_120 (type) (fun (fun [List_68 EmptyRose_119] out_EmptyRose_120) out_EmptyRose_120))))] out_EmptyRose_115)
                                    [
-
                                      case_EmptyRose_103
+
                                      case_EmptyRose_116
                                      (iwrap
-
                                        (lam List_118 (fun (type) (type)) (lam a_119 (type) (all out_List_120 (type) (fun out_List_120 (fun (fun a_119 (fun [List_118 a_119] out_List_120)) out_List_120)))))
-
                                        a_117
+
                                        (lam List_131 (fun (type) (type)) (lam a_132 (type) (all out_List_133 (type) (fun out_List_133 (fun (fun a_132 (fun [List_131 a_132] out_List_133)) out_List_133)))))
+
                                        a_130
                                        (abs
-
                                          out_List_121
+
                                          out_List_134
                                          (type)
                                          (lam
-
                                            case_Nil_122
-
                                            out_List_121
+
                                            case_Nil_135
+
                                            out_List_134
                                            (lam
-
                                              case_Cons_123
-
                                              (fun a_117 (fun [(lam a_124 (type) (ifix (lam List_125 (fun (type) (type)) (lam a_126 (type) (all out_List_127 (type) (fun out_List_127 (fun (fun a_126 (fun [List_125 a_126] out_List_127)) out_List_127))))) a_124)) a_117] out_List_121))
-
                                              case_Nil_122
+
                                              case_Cons_136
+
                                              (fun a_130 (fun [(lam a_137 (type) (ifix (lam List_138 (fun (type) (type)) (lam a_139 (type) (all out_List_140 (type) (fun out_List_140 (fun (fun a_139 (fun [List_138 a_139] out_List_140)) out_List_140))))) a_137)) a_130] out_List_134))
+
                                              case_Nil_135
                                            )
                                          )
                                        )
                              )
                            ]
                            (iwrap
-
                              (lam List_118 (fun (type) (type)) (lam a_119 (type) (all out_List_120 (type) (fun out_List_120 (fun (fun a_119 (fun [List_118 a_119] out_List_120)) out_List_120)))))
-
                              a_117
+
                              (lam List_131 (fun (type) (type)) (lam a_132 (type) (all out_List_133 (type) (fun out_List_133 (fun (fun a_132 (fun [List_131 a_132] out_List_133)) out_List_133)))))
+
                              a_130
                              (abs
-
                                out_List_121
+
                                out_List_134
                                (type)
                                (lam
-
                                  case_Nil_122
-
                                  out_List_121
+
                                  case_Nil_135
+
                                  out_List_134
                                  (lam
-
                                    case_Cons_123
-
                                    (fun a_117 (fun [(lam a_124 (type) (ifix (lam List_125 (fun (type) (type)) (lam a_126 (type) (all out_List_127 (type) (fun out_List_127 (fun (fun a_126 (fun [List_125 a_126] out_List_127)) out_List_127))))) a_124)) a_117] out_List_121))
-
                                    case_Nil_122
+
                                    case_Cons_136
+
                                    (fun a_130 (fun [(lam a_137 (type) (ifix (lam List_138 (fun (type) (type)) (lam a_139 (type) (all out_List_140 (type) (fun out_List_140 (fun (fun a_139 (fun [List_138 a_139] out_List_140)) out_List_140))))) a_137)) a_130] out_List_134))
+
                                    case_Nil_135
                                  )
                                )
                              )
(abs
-
  out_Bool_90
+
  out_Bool_103
  (type)
-
  (lam case_True_91 out_Bool_90 (lam case_False_92 out_Bool_90 case_False_92))
+
  (lam
+
    case_True_104 out_Bool_103 (lam case_False_105 out_Bool_103 case_False_105)
+
  )
)
\ No newline at end of file
(abs
-
  out_Bool_87
+
  out_Bool_100
  (type)
-
  (lam case_True_88 out_Bool_87 (lam case_False_89 out_Bool_87 case_True_88))
+
  (lam
+
    case_True_101 out_Bool_100 (lam case_False_102 out_Bool_100 case_True_101)
+
  )
)
\ No newline at end of file
(abs
-
  out_Bool_173
+
  out_Bool_186
  (type)
  (lam
-
    case_True_174 out_Bool_173 (lam case_False_175 out_Bool_173 case_True_174)
+
    case_True_187 out_Bool_186 (lam case_False_188 out_Bool_186 case_True_187)
  )
)
\ No newline at end of file
    - {slot:
       Slot: 27}
    - {utxo-at:
-
       Utxo at ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69 =
-
         12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c!1: PayToScript: 4c592448cff8d2b2ee40a509e1d5224260ef29f5b22cd920616e39cad65f466c Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}}
-
         40bba9774b4e847961264812c75e56889f3ee2659e55d5ee76138162be2c0fde!1: PayToScript: b8324180800f57f26dee2ad65990e0a762a5dab9424d32e49855abd495f7196b Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}
-
         60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884!1: PayToScript: 49cd69a6941f191e3d14ce83834e0f2ce175318995b40380854e3201171c0baa Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}}
+
       Utxo at ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99 =
+
         3cae55f82786920c7cb6b7ed7a7b7a9ff5b84ca4f8759fcf3433898d43210dba!1: PayToScript: 4c592448cff8d2b2ee40a509e1d5224260ef29f5b22cd920616e39cad65f466c Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}}
+
         ab5df68931f640de24cc2e7c5d2cd9415464023493ae601d5798d4b75e35cc14!1: PayToScript: 49cd69a6941f191e3d14ce83834e0f2ce175318995b40380854e3201171c0baa Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}
+
         eccbf2065dc6bb81bc5c861ed25d054ad063767213db1655c4db5e916f07882b!1: PayToScript: b8324180800f57f26dee2ad65990e0a762a5dab9424d32e49855abd495f7196b Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}}
    - {tx:
-
       WriteTxSuccess: 5c8ca315e659ca58b2a25db294e26c9b357e059056ea55891de4d42e407115a3}
+
       WriteTxSuccess: b1d63b6be5de66c33417fdd8461e1b023c1af598c7ad93e1fa931aec7d69626c}
  Events for W2:
    - {contribute:
       EndpointValue: Contribution {contribValue = Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}}}
    - {own-pubkey:
       fc51cd8e6218a1a38da47ed00230f0580816ed13ba3303ac5deb911548908025}
    - {tx:
-
       WriteTxSuccess: 40bba9774b4e847961264812c75e56889f3ee2659e55d5ee76138162be2c0fde}
+
       WriteTxSuccess: eccbf2065dc6bb81bc5c861ed25d054ad063767213db1655c4db5e916f07882b}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 40bba9774b4e847961264812c75e56889f3ee2659e55d5ee76138162be2c0fde:
+
       ( ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
+
       , Tx eccbf2065dc6bb81bc5c861ed25d054ad063767213db1655c4db5e916f07882b:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!8
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9990)]})]}} addressed to
             PubKeyAddress: 03d200a81ee0feace8fb845e5ec950a6f9add83709244f7b81134654139f41a4
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
         signatures:
           fc51cd8e6218a1a38da47ed00230f0580816ed13ba3303ac5deb911548908025
         validity range: Interval {ivFrom = LowerBound (Finite (Slot {getSlot = 1})) True, ivTo = UpperBound (Finite (Slot {getSlot = 20})) True}} )}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884:
+
       ( ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
+
       , Tx ab5df68931f640de24cc2e7c5d2cd9415464023493ae601d5798d4b75e35cc14:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!3
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9990)]})]}} addressed to
             PubKeyAddress: feb345e86b9c2a7add2bfc695fa8aecd4ac5b0dfaf3a477f6fa968cdd30571c7
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
         signatures:
           98a5e3a36e67aaba89888bf093de1ad963e774013b3902bfab356d8b90178a63
         validity range: Interval {ivFrom = LowerBound (Finite (Slot {getSlot = 1})) True, ivTo = UpperBound (Finite (Slot {getSlot = 20})) True}} )}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c:
+
       ( ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
+
       , Tx 3cae55f82786920c7cb6b7ed7a7b7a9ff5b84ca4f8759fcf3433898d43210dba:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!7
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9999)]})]}} addressed to
             PubKeyAddress: 5aebc31421e7af1bdb47326709c27f3fd9381b00b0aca127b8dccd5f8525a538
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
    - {own-pubkey:
       98a5e3a36e67aaba89888bf093de1ad963e774013b3902bfab356d8b90178a63}
    - {tx:
-
       WriteTxSuccess: 60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884}
+
       WriteTxSuccess: ab5df68931f640de24cc2e7c5d2cd9415464023493ae601d5798d4b75e35cc14}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884:
+
       ( ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
+
       , Tx ab5df68931f640de24cc2e7c5d2cd9415464023493ae601d5798d4b75e35cc14:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!3
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9990)]})]}} addressed to
             PubKeyAddress: feb345e86b9c2a7add2bfc695fa8aecd4ac5b0dfaf3a477f6fa968cdd30571c7
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
         signatures:
           98a5e3a36e67aaba89888bf093de1ad963e774013b3902bfab356d8b90178a63
         validity range: Interval {ivFrom = LowerBound (Finite (Slot {getSlot = 1})) True, ivTo = UpperBound (Finite (Slot {getSlot = 20})) True}} )}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c:
+
       ( ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
+
       , Tx 3cae55f82786920c7cb6b7ed7a7b7a9ff5b84ca4f8759fcf3433898d43210dba:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!7
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9999)]})]}} addressed to
             PubKeyAddress: 5aebc31421e7af1bdb47326709c27f3fd9381b00b0aca127b8dccd5f8525a538
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
    - {own-pubkey:
       f81fb54a825fced95eb033afcd64314075abfb0abd20a970892503436f34b863}
    - {tx:
-
       WriteTxSuccess: 12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c}
+
       WriteTxSuccess: 3cae55f82786920c7cb6b7ed7a7b7a9ff5b84ca4f8759fcf3433898d43210dba}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c:
+
       ( ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
+
       , Tx 3cae55f82786920c7cb6b7ed7a7b7a9ff5b84ca4f8759fcf3433898d43210dba:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!7
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9999)]})]}} addressed to
             PubKeyAddress: 5aebc31421e7af1bdb47326709c27f3fd9381b00b0aca127b8dccd5f8525a538
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
      Done
    Wallet: W2
      Running, waiting for input:
-
        {address: [ ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69 ]
+
        {address: [ ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99 ]
         contribute: []
         own-pubkey: NotWaitingForPubKey
         schedule collection: [ExposeEndpoint: schedule collection]
         utxo-at: []}
    Wallet: W3
      Running, waiting for input:
-
        {address: [ ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69 ]
+
        {address: [ ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99 ]
         contribute: []
         own-pubkey: NotWaitingForPubKey
         schedule collection: [ExposeEndpoint: schedule collection]
         utxo-at: []}
    Wallet: W4
      Running, waiting for input:
-
        {address: [ ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69 ]
+
        {address: [ ScriptAddress: 03843952c316b6e263bf5a6d72bc957c7ba876ee53cbb4529600a29bfa934f99 ]
         contribute: []
         own-pubkey: NotWaitingForPubKey
         schedule collection: [ExposeEndpoint: schedule collection]
Diff too large – View on GitHub