示例#1
0
        public override int VisitLemmasDecl(LemmasDecl d)
        {
            _sb.Append("lemmas ").Append(d.Name).Append(" = ");
            _sb.Append(d.ThmNames.SpaceAggregate());

            return(0);
        }
        public IList <OuterDecl> Prelude()
        {
            var assmLabels        = assmManager.AllAssumptionLabels();
            var globalAssmsLemmas = new LemmasDecl(globalAssmsName, assmLabels);

            var closedAssm = assmManager.GetAssumptionLabel(AssumptionManager.SpecialAssumptionsKind.TypeValClosed);

            var forallPolyThm =
                new LemmasDecl("forall_poly_thm", new List <string> {
                "forall_vc_type[OF " + closedAssm + "]"
            });
            var existsPolyThm =
                new LemmasDecl("exists_poly_thm", new List <string> {
                "exists_vc_type[OF " + closedAssm + "]"
            });

            // if One_nat_def is not removed from the simpset, then there is an issue with the assumption "ns 1 = ...",
            // since Isabelle rewrites it to Suc 0 and a subsequent step in the proof may fail
            var decl = new DeclareDecl("Nat.One_nat_def[simp del]");

            return(new List <OuterDecl> {
                globalAssmsLemmas, forallPolyThm, existsPolyThm, decl
            });
        }