diff --git a/ROOT b/ROOT index 3ef9ecfe..7bec939f 100644 --- a/ROOT +++ b/ROOT @@ -45,6 +45,7 @@ session Tests in "tests" = Case_Studies + sessions System_Fsub Operations + Infinitary_Lambda_Calculus directories "fixtures" theories diff --git a/Tools/var_classes.ML b/Tools/var_classes.ML index 26d45608..d762e5f3 100644 --- a/Tools/var_classes.ML +++ b/Tools/var_classes.ML @@ -81,6 +81,10 @@ fun mk_class_for_bound b bound lthy = let val (class, lthy) = Local_Theory.background_theory_result (fn thy => let + (*Work around loss of qualification in "class" axioms by replicating it in the name*) + val b' = fold_rev Binding.prefix_name + (map (suffix "_" o fst) (filter snd (Binding.path_of b))) b; + fun mk_assumption name term = ((Binding.name name, []), single (term, [])); val large = mk_assumption "large" (HOLogic.mk_Trueprop (mk_ordLeq (mk_card_of (mk_Field bound)) @@ -90,7 +94,7 @@ fun mk_class_for_bound b bound lthy = mk_regularCard (mk_card_of (HOLogic.mk_UNIV (Term.aT @{sort type}))) )) - val (class, lthy) = Class_Declaration.class b [] [] [ + val (class, lthy) = Class_Declaration.class b' [] [] [ Element.Assumes [large, regular] ] thy; in (class, Local_Theory.exit_global lthy) end diff --git a/tests/Case_Study_Regression_Tests.thy b/tests/Case_Study_Regression_Tests.thy index 1c44b19b..9b73ae56 100644 --- a/tests/Case_Study_Regression_Tests.thy +++ b/tests/Case_Study_Regression_Tests.thy @@ -1,5 +1,5 @@ theory Case_Study_Regression_Tests - imports "Binders.MRBNF_Recursor" "System_Fsub.Pattern" + imports "Binders.MRBNF_Recursor" "System_Fsub.Pattern" "Infinitary_Lambda_Calculus.ILC" begin (* #72 *) @@ -7,4 +7,13 @@ binder_datatype (FVars: 'v, FTVars: 'tv) trm2 = Var 'v | Let "('tv, p::'v) pat" "('v, 'tv) trm2" t::"('v, 'tv) trm2" binds p in t +(* #126 *) +binder_datatype (FFVars: 'a) iterm2 + = iVar 'a + | iApp "'a iterm2" "'a iterm2 stream" + | iLam "(xs::'a) stream" t::"'a iterm2" binds xs in t +for + map: ivvsubst + subst: itvsubst + end \ No newline at end of file