Skip to content

Instantly share code, notes, and snippets.

@catalin-hritcu
Created July 21, 2015 08:56
Show Gist options
  • Save catalin-hritcu/db064f001cd865548ef8 to your computer and use it in GitHub Desktop.
Save catalin-hritcu/db064f001cd865548ef8 to your computer and use it in GitHub Desktop.
Query file that causes Z3 to fail
(set-option :global-decls false)
(set-option :smt.mbqi false)
(set-option :smt.qi.profile true)
(declare-sort Ref)
(declare-fun Ref_constr_id (Ref) Int)
(declare-sort String)
(declare-fun String_constr_id (String) Int)
(declare-sort Kind)
(declare-fun Kind_constr_id (Kind) Int)
(declare-sort Type)
(declare-fun Type_constr_id (Type) Int)
(declare-sort Term)
(declare-fun Term_constr_id (Term) Int)
(declare-datatypes () ((Fuel
(ZFuel)
(SFuel (prec Fuel)))))
(declare-fun MaxIFuel () Fuel)
(declare-fun MaxFuel () Fuel)
(declare-fun PreKind (Type) Kind)
(declare-fun PreType (Term) Type)
(declare-fun Valid (Type) Bool)
(declare-fun HasKind (Type Kind) Bool)
(declare-fun HasType (Term Type) Bool)
(define-fun IsTyped ((x Term)) Bool
(exists ((t Type)) (HasType x t)))
(declare-fun HasTypeFuel (Fuel Term Type) Bool)
(declare-fun ApplyEF (Term Fuel) Term)
(declare-fun ApplyEE (Term Term) Term)
(declare-fun ApplyET (Term Type) Term)
(declare-fun ApplyTE (Type Term) Type)
(declare-fun ApplyTT (Type Type) Type)
(declare-fun Rank (Term) Int)
(declare-fun Closure (Term) Term)
(declare-fun ConsTerm (Term Term) Term)
(declare-fun ConsType (Type Term) Term)
(declare-fun ConsFuel (Fuel Term) Term)
(declare-fun Precedes (Term Term) Type)
(assert (forall ((e Term) (t Type))
(! (= (HasType e t)
(HasTypeFuel MaxIFuel e t))
:pattern ((HasType e t)))))
(assert (forall ((f Fuel) (e Term) (t Type))
(! (= (HasTypeFuel (SFuel f) e t)
(HasTypeFuel f e t))
:pattern ((HasTypeFuel (SFuel f) e t)))))
(assert (forall ((t1 Term) (t2 Term))
(! (iff (Valid (Precedes t1 t2))
(< (Rank t1) (Rank t2)))
:pattern ((Precedes t1 t2)))))
(define-fun Prims.Precedes ((a Type) (b Type) (t1 Term) (t2 Term)) Type
(Precedes t1 t2))
; <start constructor String_const>
;;;;;;;;;;;;;;;;Constructor
(declare-fun String_const (Int) String)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@u0 Int))
(= 0
(String_constr_id (String_const @u0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun String_const_proj_0 (String) Int)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@u0 Int))
(! (= (String_const_proj_0 (String_const @u0))
@u0)
:pattern ((String_const @u0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-String_const ((@u0 String)) Bool
(and (= (String_constr_id @u0)
0)
(= @u0
(String_const (String_const_proj_0 @u0)))))
; </end constructor String_const>
; <start constructor Kind_type>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Kind_type () Kind)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 0
(Kind_constr_id Kind_type)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Kind_type ((@u0 Kind)) Bool
(and (= (Kind_constr_id @u0)
0)
(= @u0
Kind_type)))
; </end constructor Kind_type>
; <start constructor Kind_arrow>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Kind_arrow (Int) Kind)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@u0 Int))
(= 1
(Kind_constr_id (Kind_arrow @u0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Kind_arrow_id (Kind) Int)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@u0 Int))
(! (= (Kind_arrow_id (Kind_arrow @u0))
@u0)
:pattern ((Kind_arrow @u0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Kind_arrow ((@u0 Kind)) Bool
(and (= (Kind_constr_id @u0)
1)
(= @u0
(Kind_arrow (Kind_arrow_id @u0)))))
; </end constructor Kind_arrow>
; <start constructor Typ_fun>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Typ_fun (Int) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@u0 Int))
(= 1
(Type_constr_id (Typ_fun @u0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Typ_fun_id (Type) Int)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@u0 Int))
(! (= (Typ_fun_id (Typ_fun @u0))
@u0)
:pattern ((Typ_fun @u0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Typ_fun ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
1)
(= @a0
(Typ_fun (Typ_fun_id @a0)))))
; </end constructor Typ_fun>
; <start constructor Typ_app>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Typ_app (Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type))
(= 2
(Type_constr_id (Typ_app @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Typ_app_fst (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Typ_app_fst (Typ_app @a0
@a1))
@a0)
:pattern ((Typ_app @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Typ_app_snd (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Typ_app_snd (Typ_app @a0
@a1))
@a1)
:pattern ((Typ_app @a0
@a1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Typ_app ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
2)
(= @a0
(Typ_app (Typ_app_fst @a0)
(Typ_app_snd @a0)))))
; </end constructor Typ_app>
; <start constructor Typ_dep>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Typ_dep (Type Term) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@x1 Term))
(= 3
(Type_constr_id (Typ_dep @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Typ_dep_fst (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Typ_dep_fst (Typ_dep @a0
@x1))
@a0)
:pattern ((Typ_dep @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Typ_dep_snd (Type) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Typ_dep_snd (Typ_dep @a0
@x1))
@x1)
:pattern ((Typ_dep @a0
@x1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Typ_dep ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
3)
(= @a0
(Typ_dep (Typ_dep_fst @a0)
(Typ_dep_snd @a0)))))
; </end constructor Typ_dep>
; <start constructor Typ_uvar>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Typ_uvar (Int) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@u0 Int))
(= 4
(Type_constr_id (Typ_uvar @u0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Typ_uvar_fst (Type) Int)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@u0 Int))
(! (= (Typ_uvar_fst (Typ_uvar @u0))
@u0)
:pattern ((Typ_uvar @u0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Typ_uvar ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
4)
(= @a0
(Typ_uvar (Typ_uvar_fst @a0)))))
; </end constructor Typ_uvar>
; <start constructor Term_unit>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Term_unit () Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 0
(Term_constr_id Term_unit)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Term_unit ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
0)
(= @x0
Term_unit)))
; </end constructor Term_unit>
; <start constructor BoxInt>
;;;;;;;;;;;;;;;;Constructor
(declare-fun BoxInt (Int) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@u0 Int))
(= 1
(Term_constr_id (BoxInt @u0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun BoxInt_proj_0 (Term) Int)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@u0 Int))
(! (= (BoxInt_proj_0 (BoxInt @u0))
@u0)
:pattern ((BoxInt @u0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-BoxInt ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
1)
(= @x0
(BoxInt (BoxInt_proj_0 @x0)))))
; </end constructor BoxInt>
; <start constructor BoxBool>
;;;;;;;;;;;;;;;;Constructor
(declare-fun BoxBool (Bool) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@u0 Bool))
(= 2
(Term_constr_id (BoxBool @u0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun BoxBool_proj_0 (Term) Bool)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@u0 Bool))
(! (= (BoxBool_proj_0 (BoxBool @u0))
@u0)
:pattern ((BoxBool @u0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-BoxBool ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
2)
(= @x0
(BoxBool (BoxBool_proj_0 @x0)))))
; </end constructor BoxBool>
; <start constructor BoxString>
;;;;;;;;;;;;;;;;Constructor
(declare-fun BoxString (String) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@u0 String))
(= 3
(Term_constr_id (BoxString @u0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun BoxString_proj_0 (Term) String)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@u0 String))
(! (= (BoxString_proj_0 (BoxString @u0))
@u0)
:pattern ((BoxString @u0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-BoxString ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
3)
(= @x0
(BoxString (BoxString_proj_0 @x0)))))
; </end constructor BoxString>
; <start constructor BoxRef>
;;;;;;;;;;;;;;;;Constructor
(declare-fun BoxRef (Ref) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@u0 Ref))
(= 4
(Term_constr_id (BoxRef @u0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun BoxRef_proj_0 (Term) Ref)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@u0 Ref))
(! (= (BoxRef_proj_0 (BoxRef @u0))
@u0)
:pattern ((BoxRef @u0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-BoxRef ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
4)
(= @x0
(BoxRef (BoxRef_proj_0 @x0)))))
; </end constructor BoxRef>
; <start constructor Exp_uvar>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Exp_uvar (Int) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@u0 Int))
(= 5
(Term_constr_id (Exp_uvar @u0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Exp_uvar_fst (Term) Int)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@u0 Int))
(! (= (Exp_uvar_fst (Exp_uvar @u0))
@u0)
:pattern ((Exp_uvar @u0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Exp_uvar ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
5)
(= @x0
(Exp_uvar (Exp_uvar_fst @x0)))))
; </end constructor Exp_uvar>
; <start constructor LexCons>
;;;;;;;;;;;;;;;;Constructor
(declare-fun LexCons (Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@x0 Term) (@x1 Term))
(= 6
(Term_constr_id (LexCons @x0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun LexCons_0 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (LexCons_0 (LexCons @x0
@x1))
@x0)
:pattern ((LexCons @x0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun LexCons_1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (LexCons_1 (LexCons @x0
@x1))
@x1)
:pattern ((LexCons @x0
@x1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-LexCons ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
6)
(= @x0
(LexCons (LexCons_0 @x0)
(LexCons_1 @x0)))))
; </end constructor LexCons>
(define-fun is-Prims.LexCons ((t Term)) Bool
(is-LexCons t))
(assert (forall ((x1 Term) (x2 Term) (y1 Term) (y2 Term))
(iff (Valid (Precedes (LexCons x1 x2) (LexCons y1 y2)))
(or (Valid (Precedes x1 y1))
(and (= x1 y1)
(Valid (Precedes x2 y2)))))))
; encoding sigelt Prims.Unop
; <Skipped Prims.Unop/>
; encoding sigelt Prims.Binop
; <Skipped Prims.Binop/>
; encoding sigelt Prims.l_not
; <Start encoding Prims.l_not>
(declare-fun Prims.l_not (Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.l_not@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 15
(Type_constr_id Prims.l_not@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type))
(! (= (ApplyTT Prims.l_not@tok
@a0)
(Prims.l_not @a0))
:pattern ((ApplyTT Prims.l_not@tok
@a0)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.l_not@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasKind (Prims.l_not @a0)
Kind_type))
:pattern ((Prims.l_not @a0)))))
; </end encoding Prims.l_not>
; encoding sigelt Prims.l_and
; <Start encoding Prims.l_and>
(declare-fun Prims.l_and (Type Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.l_and@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 17
(Type_constr_id Prims.l_and@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.l_and@tok
@a0)
@a1)
(Prims.l_and @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.l_and@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.l_and@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(HasKind (Prims.l_and @a0
@a1)
Kind_type))
:pattern ((Prims.l_and @a0
@a1)))))
; </end encoding Prims.l_and>
; encoding sigelt Prims.l_or
; <Start encoding Prims.l_or>
(declare-fun Prims.l_or (Type Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.l_or@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 19
(Type_constr_id Prims.l_or@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.l_or@tok
@a0)
@a1)
(Prims.l_or @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.l_or@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.l_or@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(HasKind (Prims.l_or @a0
@a1)
Kind_type))
:pattern ((Prims.l_or @a0
@a1)))))
; </end encoding Prims.l_or>
; encoding sigelt Prims.l_iff
; <Start encoding Prims.l_iff>
(declare-fun Prims.l_iff (Type Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.l_iff@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 21
(Type_constr_id Prims.l_iff@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.l_iff@tok
@a0)
@a1)
(Prims.l_iff @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.l_iff@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.l_iff@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(HasKind (Prims.l_iff @a0
@a1)
Kind_type))
:pattern ((Prims.l_iff @a0
@a1)))))
; </end encoding Prims.l_iff>
; encoding sigelt Prims.l_imp
; <Start encoding Prims.l_imp>
(declare-fun Prims.l_imp (Type Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.l_imp@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 23
(Type_constr_id Prims.l_imp@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.l_imp@tok
@a0)
@a1)
(Prims.l_imp @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.l_imp@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.l_imp@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(HasKind (Prims.l_imp @a0
@a1)
Kind_type))
:pattern ((Prims.l_imp @a0
@a1)))))
; </end encoding Prims.l_imp>
; encoding sigelt Prims.Forall
; <Start encoding Prims.Forall>
(declare-fun Prims.Forall (Type Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Forall@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 25
(Type_constr_id Prims.Forall@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.Forall@tok
@a0)
@a1)
(Prims.Forall @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.Forall@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Forall@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x2 Term))
(! (implies (HasType @x2
@a0)
(HasKind (ApplyTE @a1
@x2)
Kind_type))
:pattern ((ApplyTE @a1
@x2)))))
(HasKind (Prims.Forall @a0
@a1)
Kind_type))
:pattern ((Prims.Forall @a0
@a1)))))
; </end encoding Prims.Forall>
; encoding sigelt Prims.Exists
; <Start encoding Prims.Exists>
(declare-fun Prims.Exists (Type Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Exists@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 27
(Type_constr_id Prims.Exists@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.Exists@tok
@a0)
@a1)
(Prims.Exists @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.Exists@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Exists@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x2 Term))
(! (implies (HasType @x2
@a0)
(HasKind (ApplyTE @a1
@x2)
Kind_type))
:pattern ((ApplyTE @a1
@x2)))))
(HasKind (Prims.Exists @a0
@a1)
Kind_type))
:pattern ((Prims.Exists @a0
@a1)))))
; </end encoding Prims.Exists>
; encoding sigelt Prims.ForallTyp
; <Start encoding Prims.ForallTyp>
(declare-fun Prims.ForallTyp (Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.ForallTyp@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 29
(Type_constr_id Prims.ForallTyp@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type))
(! (= (ApplyTT Prims.ForallTyp@tok
@a0)
(Prims.ForallTyp @a0))
:pattern ((ApplyTT Prims.ForallTyp@tok
@a0)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.ForallTyp@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type))
(! (implies (forall ((@a1 Type))
(! (implies (HasKind @a1
Kind_type)
(HasKind (ApplyTT @a1
@a1)
Kind_type))
:pattern ((ApplyTT @a1
@a1))))
(HasKind (Prims.ForallTyp @a0)
Kind_type))
:pattern ((Prims.ForallTyp @a0)))))
; </end encoding Prims.ForallTyp>
; encoding sigelt Prims.ExistsTyp
; <Start encoding Prims.ExistsTyp>
(declare-fun Prims.ExistsTyp (Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.ExistsTyp@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 31
(Type_constr_id Prims.ExistsTyp@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type))
(! (= (ApplyTT Prims.ExistsTyp@tok
@a0)
(Prims.ExistsTyp @a0))
:pattern ((ApplyTT Prims.ExistsTyp@tok
@a0)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.ExistsTyp@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type))
(! (implies (forall ((@a1 Type))
(! (implies (HasKind @a1
Kind_type)
(HasKind (ApplyTT @a1
@a1)
Kind_type))
:pattern ((ApplyTT @a1
@a1))))
(HasKind (Prims.ExistsTyp @a0)
Kind_type))
:pattern ((Prims.ExistsTyp @a0)))))
; </end encoding Prims.ExistsTyp>
; encoding sigelt Prims.True
; <Start encoding Prims.True>
(declare-fun Prims.True () Type)
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.True
Kind_type))
; </end encoding Prims.True>
; encoding sigelt Prims.False
; <Start encoding Prims.False>
(declare-fun Prims.False () Type)
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.False
Kind_type))
; </end encoding Prims.False>
; encoding sigelt Prims.EqTyp
; <Start encoding Prims.EqTyp>
(declare-fun Prims.EqTyp (Type Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.EqTyp@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 35
(Type_constr_id Prims.EqTyp@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.EqTyp@tok
@a0)
@a1)
(Prims.EqTyp @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.EqTyp@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.EqTyp@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(HasKind (Prims.EqTyp @a0
@a1)
Kind_type))
:pattern ((Prims.EqTyp @a0
@a1)))))
; </end encoding Prims.EqTyp>
; encoding sigelt Prims.Eq2
; <Start encoding Prims.Eq2>
(declare-fun Prims.Eq2 (Type Type Term Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Eq2@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 37
(Type_constr_id Prims.Eq2@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (ApplyTE (ApplyTE (ApplyTT (ApplyTT Prims.Eq2@tok
@a0)
@a1)
@x2)
@x3)
(Prims.Eq2 @a0
@a1
@x2
@x3))
:pattern ((ApplyTE (ApplyTE (ApplyTT (ApplyTT Prims.Eq2@tok
@a0)
@a1)
@x2)
@x3)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Eq2@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
@a0)
(HasType @x3
@a1))
(HasKind (Prims.Eq2 @a0
@a1
@x2
@x3)
Kind_type))
:pattern ((Prims.Eq2 @a0
@a1
@x2
@x3)))))
; </end encoding Prims.Eq2>
; encoding sigelt Prims.XOR
; <Start encoding Prims.XOR>
(declare-fun Prims.XOR (Type Type) Type)
(declare-fun Prims.XOR@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 38
(Type_constr_id Prims.XOR@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.XOR@tok
@a0)
@a1)
(Prims.XOR @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.XOR@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(= (Valid (Prims.XOR @a0
@a1))
(and (or (Valid @a0)
(Valid @a1))
(not (and (Valid @a0)
(Valid @a1))))))
:pattern ((Valid (Prims.XOR @a0
@a1))))))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(HasKind (Prims.XOR @a0
@a1)
Kind_type))
:pattern ((Prims.XOR @a0
@a1)))))
; </end encoding Prims.XOR>
; encoding sigelt Prims.ITE
; <Start encoding Prims.ITE>
(declare-fun Prims.ITE (Type Type Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.ITE@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 40
(Type_constr_id Prims.ITE@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (= (ApplyTT (ApplyTT (ApplyTT Prims.ITE@tok
@a0)
@a1)
@a2)
(Prims.ITE @a0
@a1
@a2))
:pattern ((ApplyTT (ApplyTT (ApplyTT Prims.ITE@tok
@a0)
@a1)
@a2)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.ITE@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type))
(HasKind (Prims.ITE @a0
@a1
@a2)
Kind_type))
:pattern ((Prims.ITE @a0
@a1
@a2)))))
; </end encoding Prims.ITE>
; encoding sigelt Prims.Precedes
; <Skipped Prims.Precedes/>
; encoding sigelt Prims.bool
; <Start encoding Prims.bool>
; <start constructor Prims.bool>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.bool () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 41
(Type_constr_id Prims.bool)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.bool ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
41)
(= @a0
Prims.bool)))
; </end constructor Prims.bool>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.bool
Kind_type))
;;;;;;;;;;;;;;;;bool inversion
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Prims.bool)
(is-BoxBool @x1))
:pattern ((HasTypeFuel @u0
@x1
Prims.bool)))))
;;;;;;;;;;;;;;;;bool typing
(assert (forall ((@u0 Bool))
(! (HasType (BoxBool @u0)
Prims.bool)
:pattern ((BoxBool @u0)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.bool)
(= Prims.bool
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.bool)))))
; </end encoding Prims.bool>
; encoding sigelt Prims.PurePre
; <Skipped Prims.PurePre/>
; encoding sigelt Prims.PurePost
; <Skipped Prims.PurePost/>
; encoding sigelt Prims.PureWP
; <Skipped Prims.PureWP/>
; encoding sigelt Prims.pure_return
; <Skipped Prims.pure_return/>
; encoding sigelt Prims.pure_bind_wlp
; <Skipped Prims.pure_bind_wlp/>
; encoding sigelt Prims.pure_bind_wp
; <Skipped Prims.pure_bind_wp/>
; encoding sigelt Prims.pure_if_then_else
; <Skipped Prims.pure_if_then_else/>
; encoding sigelt Prims.pure_ite_wlp
; <Skipped Prims.pure_ite_wlp/>
; encoding sigelt Prims.pure_ite_wp
; <Skipped Prims.pure_ite_wp/>
; encoding sigelt Prims.pure_wp_binop
; <Skipped Prims.pure_wp_binop/>
; encoding sigelt Prims.pure_wp_as_type
; <Skipped Prims.pure_wp_as_type/>
; encoding sigelt Prims.pure_close_wp
; <Skipped Prims.pure_close_wp/>
; encoding sigelt Prims.pure_close_wp_t
; <Skipped Prims.pure_close_wp_t/>
; encoding sigelt Prims.pure_assert_p
; <Skipped Prims.pure_assert_p/>
; encoding sigelt Prims.pure_assume_p
; <Skipped Prims.pure_assume_p/>
; encoding sigelt Prims.pure_null_wp
; <Skipped Prims.pure_null_wp/>
; encoding sigelt Prims.pure_trivial
; <Skipped Prims.pure_trivial/>
; encoding sigelt Prims.PURE
; <Skipped Prims.PURE/>
; encoding sigelt Prims.Pure
; <Skipped Prims.Pure/>
; encoding sigelt Prims.Admit
; <Skipped Prims.Admit/>
; encoding sigelt Prims.Tot
; <Skipped Prims.Tot/>
; encoding sigelt Prims.GHOST
; <Skipped Prims.GHOST/>
; encoding sigelt
; <Skipped />
; encoding sigelt Prims.GTot
; <Skipped Prims.GTot/>
; encoding sigelt Prims.Ghost
; <Skipped Prims.Ghost/>
; encoding sigelt Prims.b2t
; <Start encoding Prims.b2t>
(declare-fun Prims.b2t (Term) Type)
;;;;;;;;;;;;;;;;b2t def
(assert (forall ((@x0 Term))
(! (= (Valid (Prims.b2t @x0))
(BoxBool_proj_0 @x0))
:pattern ((Valid (Prims.b2t @x0))))))
; </end encoding Prims.b2t>
; encoding sigelt Prims.unit
; <Start encoding Prims.unit>
; <start constructor Prims.unit>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.unit () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 45
(Type_constr_id Prims.unit)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.unit ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
45)
(= @a0
Prims.unit)))
; </end constructor Prims.unit>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.unit
Kind_type))
;;;;;;;;;;;;;;;;unit typing
(assert (HasType Term_unit
Prims.unit))
;;;;;;;;;;;;;;;;unit inversion
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Prims.unit)
(= @x1
Term_unit))
:pattern ((HasTypeFuel @u0
@x1
Prims.unit)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.unit)
(= Prims.unit
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.unit)))))
; </end encoding Prims.unit>
; encoding sigelt Prims.int
; <Start encoding Prims.int>
; <start constructor Prims.int>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.int () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 49
(Type_constr_id Prims.int)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.int ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
49)
(= @a0
Prims.int)))
; </end constructor Prims.int>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.int
Kind_type))
;;;;;;;;;;;;;;;;int inversion
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Prims.int)
(is-BoxInt @x1))
:pattern ((HasTypeFuel @u0
@x1
Prims.int)))))
;;;;;;;;;;;;;;;;int typing
(assert (forall ((@u0 Int))
(! (HasType (BoxInt @u0)
Prims.int)
:pattern ((BoxInt @u0)))))
;;;;;;;;;;;;;;;;well-founded ordering on nat (alt)
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (implies (and (HasType @x1
Prims.int)
(HasType @x2
Prims.int)
(> (BoxInt_proj_0 @x1)
0)
(>= (BoxInt_proj_0 @x2)
0)
(< (BoxInt_proj_0 @x2)
(BoxInt_proj_0 @x1)))
(Valid (Precedes @x2
@x1)))
:pattern ((HasTypeFuel @u0
@x1
Prims.int) (HasTypeFuel @u0
@x2
Prims.int) (Valid (Precedes @x2
@x1))))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.int)
(= Prims.int
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.int)))))
; </end encoding Prims.int>
; encoding sigelt Prims.op_AmpAmp
; <Start encoding Prims.op_AmpAmp>
(declare-fun Prims.op_AmpAmp (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_AmpAmp @x0
@x1)
(BoxBool (and (BoxBool_proj_0 @x0)
(BoxBool_proj_0 @x1))))
:pattern ((Prims.op_AmpAmp @x0
@x1)))))
; </end encoding Prims.op_AmpAmp>
; encoding sigelt Prims.op_BarBar
; <Start encoding Prims.op_BarBar>
(declare-fun Prims.op_BarBar (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_BarBar @x0
@x1)
(BoxBool (or (BoxBool_proj_0 @x0)
(BoxBool_proj_0 @x1))))
:pattern ((Prims.op_BarBar @x0
@x1)))))
; </end encoding Prims.op_BarBar>
; encoding sigelt Prims.op_Negation
; <Start encoding Prims.op_Negation>
(declare-fun Prims.op_Negation (Term) Term)
(assert (forall ((@x0 Term))
(! (= (Prims.op_Negation @x0)
(BoxBool (not (BoxBool_proj_0 @x0))))
:pattern ((Prims.op_Negation @x0)))))
; </end encoding Prims.op_Negation>
; encoding sigelt Prims.op_Multiply
; <Start encoding Prims.op_Multiply>
(declare-fun Prims.op_Multiply (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_Multiply @x0
@x1)
(BoxInt (* (BoxInt_proj_0 @x0)
(BoxInt_proj_0 @x1))))
:pattern ((Prims.op_Multiply @x0
@x1)))))
; </end encoding Prims.op_Multiply>
; encoding sigelt Prims.op_Subtraction
; <Start encoding Prims.op_Subtraction>
(declare-fun Prims.op_Subtraction (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_Subtraction @x0
@x1)
(BoxInt (- (BoxInt_proj_0 @x0)
(BoxInt_proj_0 @x1))))
:pattern ((Prims.op_Subtraction @x0
@x1)))))
; </end encoding Prims.op_Subtraction>
; encoding sigelt Prims.op_Addition
; <Start encoding Prims.op_Addition>
(declare-fun Prims.op_Addition (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_Addition @x0
@x1)
(BoxInt (+ (BoxInt_proj_0 @x0)
(BoxInt_proj_0 @x1))))
:pattern ((Prims.op_Addition @x0
@x1)))))
; </end encoding Prims.op_Addition>
; encoding sigelt Prims.op_Minus
; <Start encoding Prims.op_Minus>
(declare-fun Prims.op_Minus (Term) Term)
(assert (forall ((@x0 Term))
(! (= (Prims.op_Minus @x0)
(BoxInt (- (BoxInt_proj_0 @x0))))
:pattern ((Prims.op_Minus @x0)))))
; </end encoding Prims.op_Minus>
; encoding sigelt Prims.op_LessThanOrEqual
; <Start encoding Prims.op_LessThanOrEqual>
(declare-fun Prims.op_LessThanOrEqual (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_LessThanOrEqual @x0
@x1)
(BoxBool (<= (BoxInt_proj_0 @x0)
(BoxInt_proj_0 @x1))))
:pattern ((Prims.op_LessThanOrEqual @x0
@x1)))))
; </end encoding Prims.op_LessThanOrEqual>
; encoding sigelt Prims.op_GreaterThan
; <Start encoding Prims.op_GreaterThan>
(declare-fun Prims.op_GreaterThan (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_GreaterThan @x0
@x1)
(BoxBool (> (BoxInt_proj_0 @x0)
(BoxInt_proj_0 @x1))))
:pattern ((Prims.op_GreaterThan @x0
@x1)))))
; </end encoding Prims.op_GreaterThan>
; encoding sigelt Prims.op_GreaterThanOrEqual
; <Start encoding Prims.op_GreaterThanOrEqual>
(declare-fun Prims.op_GreaterThanOrEqual (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_GreaterThanOrEqual @x0
@x1)
(BoxBool (>= (BoxInt_proj_0 @x0)
(BoxInt_proj_0 @x1))))
:pattern ((Prims.op_GreaterThanOrEqual @x0
@x1)))))
; </end encoding Prims.op_GreaterThanOrEqual>
; encoding sigelt Prims.op_LessThan
; <Start encoding Prims.op_LessThan>
(declare-fun Prims.op_LessThan (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_LessThan @x0
@x1)
(BoxBool (< (BoxInt_proj_0 @x0)
(BoxInt_proj_0 @x1))))
:pattern ((Prims.op_LessThan @x0
@x1)))))
; </end encoding Prims.op_LessThan>
; encoding sigelt Prims.op_Equality
; <Start encoding Prims.op_Equality>
(declare-fun Prims.op_Equality (Type Term Term) Term)
(assert (forall ((@a0 Type) (@x1 Term) (@x2 Term))
(! (= (Prims.op_Equality @a0
@x1
@x2)
(BoxBool (= @x1
@x2)))
:pattern ((Prims.op_Equality @a0
@x1
@x2)))))
; </end encoding Prims.op_Equality>
; encoding sigelt Prims.op_disEquality
; <Start encoding Prims.op_disEquality>
(declare-fun Prims.op_disEquality (Type Term Term) Term)
(assert (forall ((@a0 Type) (@x1 Term) (@x2 Term))
(! (= (Prims.op_disEquality @a0
@x1
@x2)
(BoxBool (not (= @x1
@x2))))
:pattern ((Prims.op_disEquality @a0
@x1
@x2)))))
; </end encoding Prims.op_disEquality>
; encoding sigelt Prims.int16
; <Start encoding Prims.int16>
(declare-fun Prims.int16 () Type)
(declare-fun Prims.int16@tok () Type)
;;;;;;;;;;;;;;;;name-token correspondence
(assert (= Prims.int16@tok
Prims.int16))
(declare-fun Typ_refine_54 () Type)
(assert (HasKind Typ_refine_54
Kind_type))
;;;;;;;;;;;;;;;;i:int{((i > (- 32769)) /\ (32768 > i))}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_54)
(and (HasType @x1
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThan @x1
(Prims.op_Minus (BoxInt 32769)))))
(Valid (Prims.b2t (Prims.op_GreaterThan (BoxInt 32768)
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_54)))))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (= Prims.int16
Typ_refine_54))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (HasKind Prims.int16
Kind_type))
; </end encoding Prims.int16>
; encoding sigelt Prims.int32
; <Start encoding Prims.int32>
(declare-fun Prims.int32 () Type)
(declare-fun Prims.int32@tok () Type)
;;;;;;;;;;;;;;;;name-token correspondence
(assert (= Prims.int32@tok
Prims.int32))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (= Prims.int32
Prims.int))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (HasKind Prims.int32
Kind_type))
; </end encoding Prims.int32>
; encoding sigelt Prims.int64
; <Start encoding Prims.int64>
; <start constructor Prims.int64>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.int64 () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 56
(Type_constr_id Prims.int64)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.int64 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
56)
(= @a0
Prims.int64)))
; </end constructor Prims.int64>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.int64
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.int64)
(= Prims.int64
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.int64)))))
; </end encoding Prims.int64>
; encoding sigelt Prims.uint8
; <Start encoding Prims.uint8>
(declare-fun Prims.uint8 () Type)
;;;;;;;;;;;;;;;;mapping to int; for now
(assert (= Prims.uint8
Prims.int))
; </end encoding Prims.uint8>
; encoding sigelt Prims.uint16
; <Start encoding Prims.uint16>
; <start constructor Prims.uint16>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.uint16 () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 59
(Type_constr_id Prims.uint16)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.uint16 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
59)
(= @a0
Prims.uint16)))
; </end constructor Prims.uint16>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.uint16
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.uint16)
(= Prims.uint16
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.uint16)))))
; </end encoding Prims.uint16>
; encoding sigelt Prims.uint32
; <Start encoding Prims.uint32>
; <start constructor Prims.uint32>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.uint32 () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 62
(Type_constr_id Prims.uint32)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.uint32 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
62)
(= @a0
Prims.uint32)))
; </end constructor Prims.uint32>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.uint32
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.uint32)
(= Prims.uint32
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.uint32)))))
; </end encoding Prims.uint32>
; encoding sigelt Prims.uint64
; <Start encoding Prims.uint64>
; <start constructor Prims.uint64>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.uint64 () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 65
(Type_constr_id Prims.uint64)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.uint64 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
65)
(= @a0
Prims.uint64)))
; </end constructor Prims.uint64>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.uint64
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.uint64)
(= Prims.uint64
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.uint64)))))
; </end encoding Prims.uint64>
; encoding sigelt Prims.char
; <Start encoding Prims.char>
(declare-fun Prims.char () Type)
;;;;;;;;;;;;;;;;mapping to int; for now
(assert (= Prims.char
Prims.int))
; </end encoding Prims.char>
; encoding sigelt Prims.float
; <Start encoding Prims.float>
; <start constructor Prims.float>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.float () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 68
(Type_constr_id Prims.float)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.float ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
68)
(= @a0
Prims.float)))
; </end constructor Prims.float>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.float
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.float)
(= Prims.float
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.float)))))
; </end encoding Prims.float>
; encoding sigelt Prims.string
; <Start encoding Prims.string>
; <start constructor Prims.string>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.string () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 71
(Type_constr_id Prims.string)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.string ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
71)
(= @a0
Prims.string)))
; </end constructor Prims.string>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.string
Kind_type))
;;;;;;;;;;;;;;;;string inversion
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Prims.string)
(is-BoxString @x1))
:pattern ((HasTypeFuel @u0
@x1
Prims.string)))))
;;;;;;;;;;;;;;;;string typing
(assert (forall ((@u0 String))
(! (HasType (BoxString @u0)
Prims.string)
:pattern ((BoxString @u0)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.string)
(= Prims.string
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.string)))))
; </end encoding Prims.string>
; encoding sigelt Prims.array
; <Start encoding Prims.array>
; <start constructor Prims.array>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.array (Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type))
(= 75
(Type_constr_id (Prims.array @a0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.array@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type))
(! (= (Prims.array@a0 (Prims.array @a0))
@a0)
:pattern ((Prims.array @a0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.array ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
75)
(= @a0
(Prims.array (Prims.array@a0 @a0)))))
; </end constructor Prims.array>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.array@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 76
(Type_constr_id Prims.array@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type))
(! (= (ApplyTT Prims.array@tok
@a0)
(Prims.array @a0))
:pattern ((ApplyTT Prims.array@tok
@a0)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.array@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasKind (Prims.array @a0)
Kind_type))
:pattern ((Prims.array @a0)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.array @a2))
(= (Prims.array @a2)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.array @a2))))))
; </end encoding Prims.array>
; encoding sigelt Prims.ref
; <Start encoding Prims.ref>
; <start constructor Prims.ref>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.ref (Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type))
(= 79
(Type_constr_id (Prims.ref @a0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.ref@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type))
(! (= (Prims.ref@a0 (Prims.ref @a0))
@a0)
:pattern ((Prims.ref @a0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.ref ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
79)
(= @a0
(Prims.ref (Prims.ref@a0 @a0)))))
; </end constructor Prims.ref>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.ref@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 80
(Type_constr_id Prims.ref@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type))
(! (= (ApplyTT Prims.ref@tok
@a0)
(Prims.ref @a0))
:pattern ((ApplyTT Prims.ref@tok
@a0)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.ref@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasKind (Prims.ref @a0)
Kind_type))
:pattern ((Prims.ref @a0)))))
;;;;;;;;;;;;;;;;ref inversion
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (implies (HasType @x1
(Prims.ref @a2))
(is-BoxRef @x1))
:pattern ((HasTypeFuel @u0
@x1
(Prims.ref @a2))))))
;;;;;;;;;;;;;;;;ref typing is injective
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type))
(! (implies (and (HasType @x1
(Prims.ref @a2))
(HasType @x1
(Prims.ref @a3)))
(= @a2
@a3))
:pattern ((HasTypeFuel @u0
@x1
(Prims.ref @a2)) (HasTypeFuel @u0
@x1
(Prims.ref @a3))))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.ref @a2))
(= (Prims.ref @a2)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.ref @a2))))))
; </end encoding Prims.ref>
; encoding sigelt Prims.LBL
; <Start encoding Prims.LBL>
(declare-fun Prims.LBL (Term Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.LBL@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 86
(Type_constr_id Prims.LBL@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@x0 Term) (@a1 Type))
(! (= (ApplyTT (ApplyTE Prims.LBL@tok
@x0)
@a1)
(Prims.LBL @x0
@a1))
:pattern ((ApplyTT (ApplyTE Prims.LBL@tok
@x0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.LBL@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@x0 Term) (@a1 Type))
(! (implies (and (HasType @x0
Prims.string)
(HasKind @a1
Kind_type))
(HasKind (Prims.LBL @x0
@a1)
Kind_type))
:pattern ((Prims.LBL @x0
@a1)))))
; </end encoding Prims.LBL>
; encoding sigelt Prims.exn
; <Start encoding Prims.exn>
; <start constructor Prims.exn>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.exn () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 87
(Type_constr_id Prims.exn)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.exn ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
87)
(= @a0
Prims.exn)))
; </end constructor Prims.exn>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.exn
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.exn)
(= Prims.exn
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.exn)))))
; </end encoding Prims.exn>
; encoding sigelt Prims.HashMultiMap
; <Start encoding Prims.HashMultiMap>
; <start constructor Prims.HashMultiMap>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.HashMultiMap (Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type))
(= 90
(Type_constr_id (Prims.HashMultiMap @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.HashMultiMap@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Prims.HashMultiMap@a0 (Prims.HashMultiMap @a0
@a1))
@a0)
:pattern ((Prims.HashMultiMap @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.HashMultiMap@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Prims.HashMultiMap@a1 (Prims.HashMultiMap @a0
@a1))
@a1)
:pattern ((Prims.HashMultiMap @a0
@a1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.HashMultiMap ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
90)
(= @a0
(Prims.HashMultiMap (Prims.HashMultiMap@a0 @a0)
(Prims.HashMultiMap@a1 @a0)))))
; </end constructor Prims.HashMultiMap>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.HashMultiMap@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 91
(Type_constr_id Prims.HashMultiMap@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.HashMultiMap@tok
@a0)
@a1)
(Prims.HashMultiMap @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.HashMultiMap@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.HashMultiMap@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(HasKind (Prims.HashMultiMap @a0
@a1)
Kind_type))
:pattern ((Prims.HashMultiMap @a0
@a1)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.HashMultiMap @a2
@a3))
(= (Prims.HashMultiMap @a2
@a3)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.HashMultiMap @a2
@a3))))))
; </end encoding Prims.HashMultiMap>
; encoding sigelt Prims.byte
; <Start encoding Prims.byte>
(declare-fun Prims.byte () Type)
(declare-fun Prims.byte@tok () Type)
;;;;;;;;;;;;;;;;name-token correspondence
(assert (= Prims.byte@tok
Prims.byte))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (= Prims.byte
Prims.uint8))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (HasKind Prims.byte
Kind_type))
; </end encoding Prims.byte>
; encoding sigelt Prims.double
; <Start encoding Prims.double>
(declare-fun Prims.double () Type)
(declare-fun Prims.double@tok () Type)
;;;;;;;;;;;;;;;;name-token correspondence
(assert (= Prims.double@tok
Prims.double))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (= Prims.double
Prims.float))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (HasKind Prims.double
Kind_type))
; </end encoding Prims.double>
; encoding sigelt Prims.list, Prims.Nil, Prims.Cons
; <Start encoding >
; <Start encoding Prims.list>
; <start constructor Prims.list>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.list (Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type))
(= 112
(Type_constr_id (Prims.list @a0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.list@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type))
(! (= (Prims.list@a0 (Prims.list @a0))
@a0)
:pattern ((Prims.list @a0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.list ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
112)
(= @a0
(Prims.list (Prims.list@a0 @a0)))))
; </end constructor Prims.list>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.list@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 113
(Type_constr_id Prims.list@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type))
(! (= (ApplyTT Prims.list@tok
@a0)
(Prims.list @a0))
:pattern ((ApplyTT Prims.list@tok
@a0)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.list@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasKind (Prims.list @a0)
Kind_type))
:pattern ((Prims.list @a0)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.list @a2))
(= (Prims.list @a2)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.list @a2))))))
; </end encoding Prims.list>
; <Start encoding Prims.Nil>
; <start constructor Prims.Nil>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Nil (Type) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type))
(= 119
(Term_constr_id (Prims.Nil @a0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Nil_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type))
(! (= (Prims.Nil_a (Prims.Nil @a0))
@a0)
:pattern ((Prims.Nil @a0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Nil ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
119)
(= @x0
(Prims.Nil (Prims.Nil_a @x0)))))
; </end constructor Prims.Nil>
;;;;;;;;;;;;;;;;( -> Tot (list a))
(declare-fun Typ_fun_121 () Type)
;;;;;;;;;;;;;;;;Typ_fun_121 kinding
(assert (HasKind Typ_fun_121
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_121)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_121)))))
;;;;;;;;;;;;;;;;Typ_fun_121 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_121)
(forall ((@a2 Type))
(! (implies (HasKind @a2
Kind_type)
(HasType (ApplyET @x1
@a2)
(Prims.list @a2)))
:pattern ((ApplyET @x1
@a2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_121)))))
;;;;;;;;;;;;;;;;data constructor proxy: Nil
(declare-fun Prims.Nil@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 124
(Term_constr_id Prims.Nil@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.Nil@tok
Typ_fun_121))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type))
(! (= (ApplyET Prims.Nil@tok
@a0)
(Prims.Nil @a0))
:pattern ((ApplyET Prims.Nil@tok
@a0)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type))
(! (implies (HasKind @a1
Kind_type)
(HasTypeFuel @u0
(Prims.Nil @a1)
(Prims.list @a1)))
:pattern ((HasTypeFuel @u0
(Prims.Nil @a1)
(Prims.list @a1))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Nil @a1)
(Prims.list @a2))
(and (= @a1
@a2)
(HasKind @a1
Kind_type)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Nil @a1)
(Prims.list @a2))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert true)
; </end encoding Prims.Nil>
; <Start encoding Prims.Cons>
; <start constructor Prims.Cons>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Cons (Type Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@x1 Term) (@x2 Term))
(= 126
(Term_constr_id (Prims.Cons @a0
@x1
@x2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Cons_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term) (@x2 Term))
(! (= (Prims.Cons_a (Prims.Cons @a0
@x1
@x2))
@a0)
:pattern ((Prims.Cons @a0
@x1
@x2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Cons_hd (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term) (@x2 Term))
(! (= (Prims.Cons_hd (Prims.Cons @a0
@x1
@x2))
@x1)
:pattern ((Prims.Cons @a0
@x1
@x2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Cons_tl (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term) (@x2 Term))
(! (= (Prims.Cons_tl (Prims.Cons @a0
@x1
@x2))
@x2)
:pattern ((Prims.Cons @a0
@x1
@x2)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Cons ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
126)
(= @x0
(Prims.Cons (Prims.Cons_a @x0)
(Prims.Cons_hd @x0)
(Prims.Cons_tl @x0)))))
; </end constructor Prims.Cons>
;;;;;;;;;;;;;;;;(hd:a -> tl:(list a) -> Tot (list a))
(declare-fun Typ_fun_128 () Type)
;;;;;;;;;;;;;;;;Typ_fun_128 kinding
(assert (HasKind Typ_fun_128
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_128)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_128)))))
;;;;;;;;;;;;;;;;Typ_fun_128 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_128)
(forall ((@a2 Type) (@x3 Term) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
@a2)
(HasType @x4
(Prims.list @a2)))
(HasType (ApplyEE (ApplyEE (ApplyET @x1
@a2)
@x3)
@x4)
(Prims.list @a2)))
:pattern ((ApplyEE (ApplyEE (ApplyET @x1
@a2)
@x3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_128)))))
;;;;;;;;;;;;;;;;data constructor proxy: Cons
(declare-fun Prims.Cons@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 131
(Term_constr_id Prims.Cons@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.Cons@tok
Typ_fun_128))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@x1 Term) (@x2 Term))
(! (= (ApplyEE (ApplyEE (ApplyET Prims.Cons@tok
@a0)
@x1)
@x2)
(Prims.Cons @a0
@x1
@x2))
:pattern ((ApplyEE (ApplyEE (ApplyET Prims.Cons@tok
@a0)
@x1)
@x2)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@x3 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasTypeFuel (SFuel @u0)
@x2
@a1)
(HasTypeFuel (SFuel @u0)
@x3
(Prims.list @a1)))
(HasTypeFuel @u0
(Prims.Cons @a1
@x2
@x3)
(Prims.list @a1)))
:pattern ((HasTypeFuel @u0
(Prims.Cons @a1
@x2
@x3)
(Prims.list @a1))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@x3 Term) (@a4 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Cons @a1
@x2
@x3)
(Prims.list @a4))
(and (= @a1
@a4)
(HasKind @a1
Kind_type)
(HasTypeFuel @u0
@x2
@a1)
(HasTypeFuel @u0
@x3
(Prims.list @a1))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Cons @a1
@x2
@x3)
(Prims.list @a4))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@x3 Term) (@a4 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Cons @a1
@x2
@x3)
(Prims.list @a4))
(and (Valid (Precedes @x2
(Prims.Cons @a1
@x2
@x3)))
(Valid (Precedes @x3
(Prims.Cons @a1
@x2
@x3)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Cons @a1
@x2
@x3)
(Prims.list @a4))))))
; </end encoding Prims.Cons>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.list @a2))
(or (and (is-Prims.Nil @x1)
(= @a2
(Prims.Nil_a @x1)))
(and (is-Prims.Cons @x1)
(= @a2
(Prims.Cons_a @x1)))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.list @a2))))))
; </end encoding >
; encoding sigelt Prims.is_Nil
; <Start encoding Prims.is_Nil>
(declare-fun Prims.is_Nil (Type Term) Term)
;;;;;;;;;;;;;;;;((list a) -> Tot bool)
(declare-fun Typ_fun_133 () Type)
;;;;;;;;;;;;;;;;Typ_fun_133 kinding
(assert (HasKind Typ_fun_133
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_133)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_133)))))
;;;;;;;;;;;;;;;;Typ_fun_133 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_133)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
(Prims.list @a2)))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
Prims.bool))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_133)))))
(declare-fun Prims.is_Nil@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 136
(Term_constr_id Prims.is_Nil@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.is_Nil@tok
@a0)
@x1)
(Prims.is_Nil @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.is_Nil@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_Nil@tok
Typ_fun_133))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Prims.list @a0)))
(HasType (Prims.is_Nil @a0
@x1)
Prims.bool))
:pattern ((Prims.is_Nil @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.is_Nil @a0
@x1)
(BoxBool (is-Prims.Nil @x1)))
:pattern ((Prims.is_Nil @a0
@x1)))))
; </end encoding Prims.is_Nil>
; encoding sigelt Prims.is_Cons
; <Start encoding Prims.is_Cons>
(declare-fun Prims.is_Cons (Type Term) Term)
(declare-fun Prims.is_Cons@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 138
(Term_constr_id Prims.is_Cons@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.is_Cons@tok
@a0)
@x1)
(Prims.is_Cons @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.is_Cons@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_Cons@tok
Typ_fun_133))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Prims.list @a0)))
(HasType (Prims.is_Cons @a0
@x1)
Prims.bool))
:pattern ((Prims.is_Cons @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.is_Cons @a0
@x1)
(BoxBool (is-Prims.Cons @x1)))
:pattern ((Prims.is_Cons @a0
@x1)))))
; </end encoding Prims.is_Cons>
; encoding sigelt Prims.Nil.a
; <Start encoding Prims.Nil.a>
(declare-fun Prims.Nil.a (Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Nil.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 142
(Type_constr_id Prims.Nil.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyTE (ApplyTT Prims.Nil.a@tok
@a0)
@x1)
(Prims.Nil.a @a0
@x1))
:pattern ((ApplyTE (ApplyTT Prims.Nil.a@tok
@a0)
@x1)))))
(declare-fun Typ_refine_139 (Type) Type)
(assert (forall ((@a0 Type))
(! (HasKind (Typ_refine_139 @a0)
Kind_type)
:pattern ((HasKind (Typ_refine_139 @a0)
Kind_type)))))
;;;;;;;;;;;;;;;;_0_115:(list a){(is_Nil _0_115)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (iff (HasType @x1
(Typ_refine_139 @a2))
(and (HasType @x1
(Prims.list @a2))
(Valid (Prims.b2t (Prims.is_Nil @a2
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_139 @a2))))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Nil.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_139 @a0)))
(HasKind (Prims.Nil.a @a0
@x1)
Kind_type))
:pattern ((Prims.Nil.a @a0
@x1)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Nil.a @a0
@x1)
(Prims.Nil_a @x1))
:pattern ((Prims.Nil.a @a0
@x1)))))
; </end encoding Prims.Nil.a>
; encoding sigelt Prims.Cons.a
; <Start encoding Prims.Cons.a>
(declare-fun Prims.Cons.a (Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Cons.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 146
(Type_constr_id Prims.Cons.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyTE (ApplyTT Prims.Cons.a@tok
@a0)
@x1)
(Prims.Cons.a @a0
@x1))
:pattern ((ApplyTE (ApplyTT Prims.Cons.a@tok
@a0)
@x1)))))
(declare-fun Typ_refine_143 (Type) Type)
(assert (forall ((@a0 Type))
(! (HasKind (Typ_refine_143 @a0)
Kind_type)
:pattern ((HasKind (Typ_refine_143 @a0)
Kind_type)))))
;;;;;;;;;;;;;;;;_0_117:(list a){(is_Cons _0_117)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (iff (HasType @x1
(Typ_refine_143 @a2))
(and (HasType @x1
(Prims.list @a2))
(Valid (Prims.b2t (Prims.is_Cons @a2
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_143 @a2))))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Cons.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_143 @a0)))
(HasKind (Prims.Cons.a @a0
@x1)
Kind_type))
:pattern ((Prims.Cons.a @a0
@x1)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Cons.a @a0
@x1)
(Prims.Cons_a @x1))
:pattern ((Prims.Cons.a @a0
@x1)))))
; </end encoding Prims.Cons.a>
; encoding sigelt Prims.Cons.hd
; <Start encoding Prims.Cons.hd>
(declare-fun Prims.Cons.hd (Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:_0_117:(list a){(is_Cons _0_117)} -> Tot a)
(declare-fun Typ_fun_148 () Type)
;;;;;;;;;;;;;;;;Typ_fun_148 kinding
(assert (HasKind Typ_fun_148
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_148)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_148)))))
;;;;;;;;;;;;;;;;Typ_fun_148 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_148)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
(Typ_refine_143 @a2)))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
@a2))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_148)))))
(declare-fun Prims.Cons.hd@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 151
(Term_constr_id Prims.Cons.hd@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.Cons.hd@tok
@a0)
@x1)
(Prims.Cons.hd @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.Cons.hd@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.Cons.hd@tok
Typ_fun_148))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_143 @a0)))
(HasType (Prims.Cons.hd @a0
@x1)
@a0))
:pattern ((Prims.Cons.hd @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Cons.hd @a0
@x1)
(Prims.Cons_hd @x1))
:pattern ((Prims.Cons.hd @a0
@x1)))))
; </end encoding Prims.Cons.hd>
; encoding sigelt Prims.Cons.tl
; <Start encoding Prims.Cons.tl>
(declare-fun Prims.Cons.tl (Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:_0_117:(list a){(is_Cons _0_117)} -> Tot (list a))
(declare-fun Typ_fun_153 () Type)
;;;;;;;;;;;;;;;;Typ_fun_153 kinding
(assert (HasKind Typ_fun_153
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_153)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_153)))))
;;;;;;;;;;;;;;;;Typ_fun_153 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_153)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
(Typ_refine_143 @a2)))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
(Prims.list @a2)))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_153)))))
(declare-fun Prims.Cons.tl@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 156
(Term_constr_id Prims.Cons.tl@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.Cons.tl@tok
@a0)
@x1)
(Prims.Cons.tl @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.Cons.tl@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.Cons.tl@tok
Typ_fun_153))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_143 @a0)))
(HasType (Prims.Cons.tl @a0
@x1)
(Prims.list @a0)))
:pattern ((Prims.Cons.tl @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Cons.tl @a0
@x1)
(Prims.Cons_tl @x1))
:pattern ((Prims.Cons.tl @a0
@x1)))))
; </end encoding Prims.Cons.tl>
; encoding sigelt Prims.pattern, Prims.SMTPat, Prims.SMTPatT
; <Start encoding >
; <Start encoding Prims.pattern>
; <start constructor Prims.pattern>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.pattern () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 174
(Type_constr_id Prims.pattern)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.pattern ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
174)
(= @a0
Prims.pattern)))
; </end constructor Prims.pattern>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.pattern
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.pattern)
(= Prims.pattern
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.pattern)))))
; </end encoding Prims.pattern>
; <Start encoding Prims.SMTPat>
; <start constructor Prims.SMTPat>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.SMTPat (Type Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@x1 Term))
(= 180
(Term_constr_id (Prims.SMTPat @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.SMTPat_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.SMTPat_a (Prims.SMTPat @a0
@x1))
@a0)
:pattern ((Prims.SMTPat @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.SMTPat__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.SMTPat__1 (Prims.SMTPat @a0
@x1))
@x1)
:pattern ((Prims.SMTPat @a0
@x1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.SMTPat ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
180)
(= @x0
(Prims.SMTPat (Prims.SMTPat_a @x0)
(Prims.SMTPat__1 @x0)))))
; </end constructor Prims.SMTPat>
;;;;;;;;;;;;;;;;(_1:a -> Tot pattern)
(declare-fun Typ_fun_182 () Type)
;;;;;;;;;;;;;;;;Typ_fun_182 kinding
(assert (HasKind Typ_fun_182
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_182)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_182)))))
;;;;;;;;;;;;;;;;Typ_fun_182 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_182)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
@a2))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
Prims.pattern))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_182)))))
;;;;;;;;;;;;;;;;data constructor proxy: SMTPat
(declare-fun Prims.SMTPat@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 185
(Term_constr_id Prims.SMTPat@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.SMTPat@tok
Typ_fun_182))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.SMTPat@tok
@a0)
@x1)
(Prims.SMTPat @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.SMTPat@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasTypeFuel (SFuel @u0)
@x2
@a1))
(HasTypeFuel @u0
(Prims.SMTPat @a1
@x2)
Prims.pattern))
:pattern ((HasTypeFuel @u0
(Prims.SMTPat @a1
@x2)
Prims.pattern)))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.SMTPat @a1
@x2)
Prims.pattern)
(and (HasKind @a1
Kind_type)
(HasTypeFuel @u0
@x2
@a1)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.SMTPat @a1
@x2)
Prims.pattern)))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.SMTPat @a1
@x2)
Prims.pattern)
(Valid (Precedes @x2
(Prims.SMTPat @a1
@x2))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.SMTPat @a1
@x2)
Prims.pattern)))))
; </end encoding Prims.SMTPat>
; <Start encoding Prims.SMTPatT>
; <start constructor Prims.SMTPatT>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.SMTPatT (Type) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type))
(= 187
(Term_constr_id (Prims.SMTPatT @a0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.SMTPatT_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type))
(! (= (Prims.SMTPatT_a (Prims.SMTPatT @a0))
@a0)
:pattern ((Prims.SMTPatT @a0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.SMTPatT ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
187)
(= @x0
(Prims.SMTPatT (Prims.SMTPatT_a @x0)))))
; </end constructor Prims.SMTPatT>
;;;;;;;;;;;;;;;;(a:Type -> Tot pattern)
(declare-fun Typ_fun_189 () Type)
;;;;;;;;;;;;;;;;Typ_fun_189 kinding
(assert (HasKind Typ_fun_189
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_189)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_189)))))
;;;;;;;;;;;;;;;;Typ_fun_189 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_189)
(forall ((@a2 Type))
(! (implies (HasKind @a2
Kind_type)
(HasType (ApplyET @x1
@a2)
Prims.pattern))
:pattern ((ApplyET @x1
@a2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_189)))))
;;;;;;;;;;;;;;;;data constructor proxy: SMTPatT
(declare-fun Prims.SMTPatT@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 192
(Term_constr_id Prims.SMTPatT@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.SMTPatT@tok
Typ_fun_189))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type))
(! (= (ApplyET Prims.SMTPatT@tok
@a0)
(Prims.SMTPatT @a0))
:pattern ((ApplyET Prims.SMTPatT@tok
@a0)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type))
(! (implies (HasKind @a1
Kind_type)
(HasTypeFuel @u0
(Prims.SMTPatT @a1)
Prims.pattern))
:pattern ((HasTypeFuel @u0
(Prims.SMTPatT @a1)
Prims.pattern)))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.SMTPatT @a1)
Prims.pattern)
(HasKind @a1
Kind_type))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.SMTPatT @a1)
Prims.pattern)))))
;;;;;;;;;;;;;;;;subterm ordering
(assert true)
; </end encoding Prims.SMTPatT>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
Prims.pattern)
(or (is-Prims.SMTPat @x1)
(is-Prims.SMTPatT @x1)))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
Prims.pattern)))))
; </end encoding >
; encoding sigelt Prims.is_SMTPat
; <Start encoding Prims.is_SMTPat>
(declare-fun Prims.is_SMTPat (Term) Term)
;;;;;;;;;;;;;;;;(pattern -> Tot bool)
(declare-fun Typ_fun_194 () Type)
;;;;;;;;;;;;;;;;Typ_fun_194 kinding
(assert (HasKind Typ_fun_194
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_194)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_194)))))
;;;;;;;;;;;;;;;;Typ_fun_194 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_194)
(forall ((@x2 Term))
(! (implies (HasType @x2
Prims.pattern)
(HasType (ApplyEE @x1
@x2)
Prims.bool))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_194)))))
(declare-fun Prims.is_SMTPat@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 197
(Term_constr_id Prims.is_SMTPat@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Prims.is_SMTPat@tok
@x0)
(Prims.is_SMTPat @x0))
:pattern ((ApplyEE Prims.is_SMTPat@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_SMTPat@tok
Typ_fun_194))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Prims.pattern)
(HasType (Prims.is_SMTPat @x0)
Prims.bool))
:pattern ((Prims.is_SMTPat @x0)))))
(assert (forall ((@x0 Term))
(! (= (Prims.is_SMTPat @x0)
(BoxBool (is-Prims.SMTPat @x0)))
:pattern ((Prims.is_SMTPat @x0)))))
; </end encoding Prims.is_SMTPat>
; encoding sigelt Prims.is_SMTPatT
; <Start encoding Prims.is_SMTPatT>
(declare-fun Prims.is_SMTPatT (Term) Term)
(declare-fun Prims.is_SMTPatT@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 199
(Term_constr_id Prims.is_SMTPatT@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Prims.is_SMTPatT@tok
@x0)
(Prims.is_SMTPatT @x0))
:pattern ((ApplyEE Prims.is_SMTPatT@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_SMTPatT@tok
Typ_fun_194))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Prims.pattern)
(HasType (Prims.is_SMTPatT @x0)
Prims.bool))
:pattern ((Prims.is_SMTPatT @x0)))))
(assert (forall ((@x0 Term))
(! (= (Prims.is_SMTPatT @x0)
(BoxBool (is-Prims.SMTPatT @x0)))
:pattern ((Prims.is_SMTPatT @x0)))))
; </end encoding Prims.is_SMTPatT>
; encoding sigelt Prims.SMTPat.a
; <Start encoding Prims.SMTPat.a>
(declare-fun Prims.SMTPat.a (Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.SMTPat.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 203
(Type_constr_id Prims.SMTPat.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@x0 Term))
(! (= (ApplyTE Prims.SMTPat.a@tok
@x0)
(Prims.SMTPat.a @x0))
:pattern ((ApplyTE Prims.SMTPat.a@tok
@x0)))))
(declare-fun Typ_refine_200 () Type)
(assert (HasKind Typ_refine_200
Kind_type))
;;;;;;;;;;;;;;;;_0_121:pattern{(is_SMTPat _0_121)}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_200)
(and (HasType @x1
Prims.pattern)
(Valid (Prims.b2t (Prims.is_SMTPat @x1)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_200)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.SMTPat.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_200)
(HasKind (Prims.SMTPat.a @x0)
Kind_type))
:pattern ((Prims.SMTPat.a @x0)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@x0 Term))
(! (= (Prims.SMTPat.a @x0)
(Prims.SMTPat_a @x0))
:pattern ((Prims.SMTPat.a @x0)))))
; </end encoding Prims.SMTPat.a>
; encoding sigelt Prims.SMTPat._1
; <Start encoding Prims.SMTPat._1>
(declare-fun Prims.SMTPat._1 (Term) Term)
;;;;;;;;;;;;;;;;(projectee:_0_121:pattern{(is_SMTPat _0_121)} -> Tot (SMTPat.a projectee))
(declare-fun Typ_fun_206 () Type)
;;;;;;;;;;;;;;;;Typ_fun_206 kinding
(assert (HasKind Typ_fun_206
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_206)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_206)))))
;;;;;;;;;;;;;;;;Typ_fun_206 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_206)
(forall ((@x2 Term))
(! (implies (HasType @x2
Typ_refine_200)
(HasType (ApplyEE @x1
@x2)
(Prims.SMTPat.a @x2)))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_206)))))
(declare-fun Prims.SMTPat._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 209
(Term_constr_id Prims.SMTPat._1@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Prims.SMTPat._1@tok
@x0)
(Prims.SMTPat._1 @x0))
:pattern ((ApplyEE Prims.SMTPat._1@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.SMTPat._1@tok
Typ_fun_206))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_200)
(HasType (Prims.SMTPat._1 @x0)
(Prims.SMTPat.a @x0)))
:pattern ((Prims.SMTPat._1 @x0)))))
(assert (forall ((@x0 Term))
(! (= (Prims.SMTPat._1 @x0)
(Prims.SMTPat__1 @x0))
:pattern ((Prims.SMTPat._1 @x0)))))
; </end encoding Prims.SMTPat._1>
; encoding sigelt Prims.SMTPatT.a
; <Start encoding Prims.SMTPatT.a>
(declare-fun Prims.SMTPatT.a (Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.SMTPatT.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 213
(Type_constr_id Prims.SMTPatT.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@x0 Term))
(! (= (ApplyTE Prims.SMTPatT.a@tok
@x0)
(Prims.SMTPatT.a @x0))
:pattern ((ApplyTE Prims.SMTPatT.a@tok
@x0)))))
(declare-fun Typ_refine_210 () Type)
(assert (HasKind Typ_refine_210
Kind_type))
;;;;;;;;;;;;;;;;_0_123:pattern{(is_SMTPatT _0_123)}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_210)
(and (HasType @x1
Prims.pattern)
(Valid (Prims.b2t (Prims.is_SMTPatT @x1)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_210)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.SMTPatT.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_210)
(HasKind (Prims.SMTPatT.a @x0)
Kind_type))
:pattern ((Prims.SMTPatT.a @x0)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@x0 Term))
(! (= (Prims.SMTPatT.a @x0)
(Prims.SMTPatT_a @x0))
:pattern ((Prims.SMTPatT.a @x0)))))
; </end encoding Prims.SMTPatT.a>
; encoding sigelt Prims.decreases
; <Start encoding Prims.decreases>
(declare-fun Prims.decreases (Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.decreases@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 215
(Type_constr_id Prims.decreases@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyTE (ApplyTT Prims.decreases@tok
@a0)
@x1)
(Prims.decreases @a0
@x1))
:pattern ((ApplyTE (ApplyTT Prims.decreases@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.decreases@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
@a0))
(HasKind (Prims.decreases @a0
@x1)
Kind_type))
:pattern ((Prims.decreases @a0
@x1)))))
; </end encoding Prims.decreases>
; encoding sigelt Prims.Lemma
; <Skipped Prims.Lemma/>
; encoding sigelt Prims.option, Prims.None, Prims.Some
; <Start encoding >
; <Start encoding Prims.option>
; <start constructor Prims.option>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.option (Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type))
(= 234
(Type_constr_id (Prims.option @a0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.option@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type))
(! (= (Prims.option@a0 (Prims.option @a0))
@a0)
:pattern ((Prims.option @a0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.option ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
234)
(= @a0
(Prims.option (Prims.option@a0 @a0)))))
; </end constructor Prims.option>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.option@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 235
(Type_constr_id Prims.option@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type))
(! (= (ApplyTT Prims.option@tok
@a0)
(Prims.option @a0))
:pattern ((ApplyTT Prims.option@tok
@a0)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.option@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasKind (Prims.option @a0)
Kind_type))
:pattern ((Prims.option @a0)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.option @a2))
(= (Prims.option @a2)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.option @a2))))))
; </end encoding Prims.option>
; <Start encoding Prims.None>
; <start constructor Prims.None>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.None (Type) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type))
(= 241
(Term_constr_id (Prims.None @a0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.None_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type))
(! (= (Prims.None_a (Prims.None @a0))
@a0)
:pattern ((Prims.None @a0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.None ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
241)
(= @x0
(Prims.None (Prims.None_a @x0)))))
; </end constructor Prims.None>
;;;;;;;;;;;;;;;;( -> Tot (option a))
(declare-fun Typ_fun_243 () Type)
;;;;;;;;;;;;;;;;Typ_fun_243 kinding
(assert (HasKind Typ_fun_243
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_243)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_243)))))
;;;;;;;;;;;;;;;;Typ_fun_243 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_243)
(forall ((@a2 Type))
(! (implies (HasKind @a2
Kind_type)
(HasType (ApplyET @x1
@a2)
(Prims.option @a2)))
:pattern ((ApplyET @x1
@a2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_243)))))
;;;;;;;;;;;;;;;;data constructor proxy: None
(declare-fun Prims.None@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 246
(Term_constr_id Prims.None@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.None@tok
Typ_fun_243))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type))
(! (= (ApplyET Prims.None@tok
@a0)
(Prims.None @a0))
:pattern ((ApplyET Prims.None@tok
@a0)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type))
(! (implies (HasKind @a1
Kind_type)
(HasTypeFuel @u0
(Prims.None @a1)
(Prims.option @a1)))
:pattern ((HasTypeFuel @u0
(Prims.None @a1)
(Prims.option @a1))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.None @a1)
(Prims.option @a2))
(and (= @a1
@a2)
(HasKind @a1
Kind_type)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.None @a1)
(Prims.option @a2))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert true)
; </end encoding Prims.None>
; <Start encoding Prims.Some>
; <start constructor Prims.Some>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Some (Type Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@x1 Term))
(= 248
(Term_constr_id (Prims.Some @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Some_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Some_a (Prims.Some @a0
@x1))
@a0)
:pattern ((Prims.Some @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Some_v (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Some_v (Prims.Some @a0
@x1))
@x1)
:pattern ((Prims.Some @a0
@x1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Some ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
248)
(= @x0
(Prims.Some (Prims.Some_a @x0)
(Prims.Some_v @x0)))))
; </end constructor Prims.Some>
;;;;;;;;;;;;;;;;(v:a -> Tot (option a))
(declare-fun Typ_fun_250 () Type)
;;;;;;;;;;;;;;;;Typ_fun_250 kinding
(assert (HasKind Typ_fun_250
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_250)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_250)))))
;;;;;;;;;;;;;;;;Typ_fun_250 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_250)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
@a2))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
(Prims.option @a2)))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_250)))))
;;;;;;;;;;;;;;;;data constructor proxy: Some
(declare-fun Prims.Some@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 253
(Term_constr_id Prims.Some@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.Some@tok
Typ_fun_250))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.Some@tok
@a0)
@x1)
(Prims.Some @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.Some@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasTypeFuel (SFuel @u0)
@x2
@a1))
(HasTypeFuel @u0
(Prims.Some @a1
@x2)
(Prims.option @a1)))
:pattern ((HasTypeFuel @u0
(Prims.Some @a1
@x2)
(Prims.option @a1))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Some @a1
@x2)
(Prims.option @a3))
(and (= @a1
@a3)
(HasKind @a1
Kind_type)
(HasTypeFuel @u0
@x2
@a1)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Some @a1
@x2)
(Prims.option @a3))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Some @a1
@x2)
(Prims.option @a3))
(Valid (Precedes @x2
(Prims.Some @a1
@x2))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Some @a1
@x2)
(Prims.option @a3))))))
; </end encoding Prims.Some>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.option @a2))
(or (and (is-Prims.None @x1)
(= @a2
(Prims.None_a @x1)))
(and (is-Prims.Some @x1)
(= @a2
(Prims.Some_a @x1)))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.option @a2))))))
; </end encoding >
; encoding sigelt Prims.is_None
; <Start encoding Prims.is_None>
(declare-fun Prims.is_None (Type Term) Term)
;;;;;;;;;;;;;;;;((option a) -> Tot bool)
(declare-fun Typ_fun_255 () Type)
;;;;;;;;;;;;;;;;Typ_fun_255 kinding
(assert (HasKind Typ_fun_255
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_255)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_255)))))
;;;;;;;;;;;;;;;;Typ_fun_255 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_255)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
(Prims.option @a2)))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
Prims.bool))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_255)))))
(declare-fun Prims.is_None@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 258
(Term_constr_id Prims.is_None@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.is_None@tok
@a0)
@x1)
(Prims.is_None @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.is_None@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_None@tok
Typ_fun_255))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Prims.option @a0)))
(HasType (Prims.is_None @a0
@x1)
Prims.bool))
:pattern ((Prims.is_None @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.is_None @a0
@x1)
(BoxBool (is-Prims.None @x1)))
:pattern ((Prims.is_None @a0
@x1)))))
; </end encoding Prims.is_None>
; encoding sigelt Prims.is_Some
; <Start encoding Prims.is_Some>
(declare-fun Prims.is_Some (Type Term) Term)
(declare-fun Prims.is_Some@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 260
(Term_constr_id Prims.is_Some@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.is_Some@tok
@a0)
@x1)
(Prims.is_Some @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.is_Some@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_Some@tok
Typ_fun_255))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Prims.option @a0)))
(HasType (Prims.is_Some @a0
@x1)
Prims.bool))
:pattern ((Prims.is_Some @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.is_Some @a0
@x1)
(BoxBool (is-Prims.Some @x1)))
:pattern ((Prims.is_Some @a0
@x1)))))
; </end encoding Prims.is_Some>
; encoding sigelt Prims.None.a
; <Start encoding Prims.None.a>
(declare-fun Prims.None.a (Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.None.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 264
(Type_constr_id Prims.None.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyTE (ApplyTT Prims.None.a@tok
@a0)
@x1)
(Prims.None.a @a0
@x1))
:pattern ((ApplyTE (ApplyTT Prims.None.a@tok
@a0)
@x1)))))
(declare-fun Typ_refine_261 (Type) Type)
(assert (forall ((@a0 Type))
(! (HasKind (Typ_refine_261 @a0)
Kind_type)
:pattern ((HasKind (Typ_refine_261 @a0)
Kind_type)))))
;;;;;;;;;;;;;;;;_0_133:(option a){(is_None _0_133)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (iff (HasType @x1
(Typ_refine_261 @a2))
(and (HasType @x1
(Prims.option @a2))
(Valid (Prims.b2t (Prims.is_None @a2
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_261 @a2))))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.None.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_261 @a0)))
(HasKind (Prims.None.a @a0
@x1)
Kind_type))
:pattern ((Prims.None.a @a0
@x1)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.None.a @a0
@x1)
(Prims.None_a @x1))
:pattern ((Prims.None.a @a0
@x1)))))
; </end encoding Prims.None.a>
; encoding sigelt Prims.Some.a
; <Start encoding Prims.Some.a>
(declare-fun Prims.Some.a (Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Some.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 268
(Type_constr_id Prims.Some.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyTE (ApplyTT Prims.Some.a@tok
@a0)
@x1)
(Prims.Some.a @a0
@x1))
:pattern ((ApplyTE (ApplyTT Prims.Some.a@tok
@a0)
@x1)))))
(declare-fun Typ_refine_265 (Type) Type)
(assert (forall ((@a0 Type))
(! (HasKind (Typ_refine_265 @a0)
Kind_type)
:pattern ((HasKind (Typ_refine_265 @a0)
Kind_type)))))
;;;;;;;;;;;;;;;;_0_135:(option a){(is_Some _0_135)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (iff (HasType @x1
(Typ_refine_265 @a2))
(and (HasType @x1
(Prims.option @a2))
(Valid (Prims.b2t (Prims.is_Some @a2
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_265 @a2))))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Some.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_265 @a0)))
(HasKind (Prims.Some.a @a0
@x1)
Kind_type))
:pattern ((Prims.Some.a @a0
@x1)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Some.a @a0
@x1)
(Prims.Some_a @x1))
:pattern ((Prims.Some.a @a0
@x1)))))
; </end encoding Prims.Some.a>
; encoding sigelt Prims.Some.v
; <Start encoding Prims.Some.v>
(declare-fun Prims.Some.v (Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:_0_135:(option a){(is_Some _0_135)} -> Tot a)
(declare-fun Typ_fun_270 () Type)
;;;;;;;;;;;;;;;;Typ_fun_270 kinding
(assert (HasKind Typ_fun_270
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_270)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_270)))))
;;;;;;;;;;;;;;;;Typ_fun_270 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_270)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
(Typ_refine_265 @a2)))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
@a2))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_270)))))
(declare-fun Prims.Some.v@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 273
(Term_constr_id Prims.Some.v@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.Some.v@tok
@a0)
@x1)
(Prims.Some.v @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.Some.v@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.Some.v@tok
Typ_fun_270))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_265 @a0)))
(HasType (Prims.Some.v @a0
@x1)
@a0))
:pattern ((Prims.Some.v @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Some.v @a0
@x1)
(Prims.Some_v @x1))
:pattern ((Prims.Some.v @a0
@x1)))))
; </end encoding Prims.Some.v>
; encoding sigelt Prims.either, Prims.Inl, Prims.Inr
; <Start encoding >
; <Start encoding Prims.either>
; <start constructor Prims.either>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.either (Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type))
(= 292
(Type_constr_id (Prims.either @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.either@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Prims.either@a0 (Prims.either @a0
@a1))
@a0)
:pattern ((Prims.either @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.either@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Prims.either@a1 (Prims.either @a0
@a1))
@a1)
:pattern ((Prims.either @a0
@a1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.either ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
292)
(= @a0
(Prims.either (Prims.either@a0 @a0)
(Prims.either@a1 @a0)))))
; </end constructor Prims.either>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.either@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 293
(Type_constr_id Prims.either@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.either@tok
@a0)
@a1)
(Prims.either @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.either@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.either@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(HasKind (Prims.either @a0
@a1)
Kind_type))
:pattern ((Prims.either @a0
@a1)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.either @a2
@a3))
(= (Prims.either @a2
@a3)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.either @a2
@a3))))))
; </end encoding Prims.either>
; <Start encoding Prims.Inl>
; <start constructor Prims.Inl>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Inl (Type Type Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(= 299
(Term_constr_id (Prims.Inl @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Inl__a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inl__a (Prims.Inl @a0
@a1
@x2))
@a0)
:pattern ((Prims.Inl @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Inl__b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inl__b (Prims.Inl @a0
@a1
@x2))
@a1)
:pattern ((Prims.Inl @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Inl_v (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inl_v (Prims.Inl @a0
@a1
@x2))
@x2)
:pattern ((Prims.Inl @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Inl ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
299)
(= @x0
(Prims.Inl (Prims.Inl__a @x0)
(Prims.Inl__b @x0)
(Prims.Inl_v @x0)))))
; </end constructor Prims.Inl>
;;;;;;;;;;;;;;;;(v:'a -> Tot (either 'a 'b))
(declare-fun Typ_fun_301 () Type)
;;;;;;;;;;;;;;;;Typ_fun_301 kinding
(assert (HasKind Typ_fun_301
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_301)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_301)))))
;;;;;;;;;;;;;;;;Typ_fun_301 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_301)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
@a2))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
(Prims.either @a2
@a3)))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_301)))))
;;;;;;;;;;;;;;;;data constructor proxy: Inl
(declare-fun Prims.Inl@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 304
(Term_constr_id Prims.Inl@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.Inl@tok
Typ_fun_301))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.Inl@tok
@a0)
@a1)
@x2)
(Prims.Inl @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.Inl@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasTypeFuel (SFuel @u0)
@x3
@a1))
(HasTypeFuel @u0
(Prims.Inl @a1
@a2
@x3)
(Prims.either @a1
@a2)))
:pattern ((HasTypeFuel @u0
(Prims.Inl @a1
@a2
@x3)
(Prims.either @a1
@a2))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@a4 Type) (@a5 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Inl @a1
@a2
@x3)
(Prims.either @a4
@a5))
(and (= @a2
@a5)
(= @a1
@a4)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasTypeFuel @u0
@x3
@a1)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Inl @a1
@a2
@x3)
(Prims.either @a4
@a5))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@a4 Type) (@a5 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Inl @a1
@a2
@x3)
(Prims.either @a4
@a5))
(Valid (Precedes @x3
(Prims.Inl @a1
@a2
@x3))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Inl @a1
@a2
@x3)
(Prims.either @a4
@a5))))))
; </end encoding Prims.Inl>
; <Start encoding Prims.Inr>
; <start constructor Prims.Inr>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Inr (Type Type Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(= 306
(Term_constr_id (Prims.Inr @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Inr__a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inr__a (Prims.Inr @a0
@a1
@x2))
@a0)
:pattern ((Prims.Inr @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Inr__b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inr__b (Prims.Inr @a0
@a1
@x2))
@a1)
:pattern ((Prims.Inr @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Inr_v (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inr_v (Prims.Inr @a0
@a1
@x2))
@x2)
:pattern ((Prims.Inr @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Inr ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
306)
(= @x0
(Prims.Inr (Prims.Inr__a @x0)
(Prims.Inr__b @x0)
(Prims.Inr_v @x0)))))
; </end constructor Prims.Inr>
;;;;;;;;;;;;;;;;(v:'b -> Tot (either 'a 'b))
(declare-fun Typ_fun_308 () Type)
;;;;;;;;;;;;;;;;Typ_fun_308 kinding
(assert (HasKind Typ_fun_308
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_308)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_308)))))
;;;;;;;;;;;;;;;;Typ_fun_308 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_308)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
@a3))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
(Prims.either @a2
@a3)))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_308)))))
;;;;;;;;;;;;;;;;data constructor proxy: Inr
(declare-fun Prims.Inr@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 311
(Term_constr_id Prims.Inr@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.Inr@tok
Typ_fun_308))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.Inr@tok
@a0)
@a1)
@x2)
(Prims.Inr @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.Inr@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasTypeFuel (SFuel @u0)
@x3
@a2))
(HasTypeFuel @u0
(Prims.Inr @a1
@a2
@x3)
(Prims.either @a1
@a2)))
:pattern ((HasTypeFuel @u0
(Prims.Inr @a1
@a2
@x3)
(Prims.either @a1
@a2))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@a4 Type) (@a5 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Inr @a1
@a2
@x3)
(Prims.either @a4
@a5))
(and (= @a2
@a5)
(= @a1
@a4)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasTypeFuel @u0
@x3
@a2)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Inr @a1
@a2
@x3)
(Prims.either @a4
@a5))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@a4 Type) (@a5 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Inr @a1
@a2
@x3)
(Prims.either @a4
@a5))
(Valid (Precedes @x3
(Prims.Inr @a1
@a2
@x3))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Inr @a1
@a2
@x3)
(Prims.either @a4
@a5))))))
; </end encoding Prims.Inr>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.either @a2
@a3))
(or (and (is-Prims.Inl @x1)
(= @a2
(Prims.Inl__a @x1))
(= @a3
(Prims.Inl__b @x1)))
(and (is-Prims.Inr @x1)
(= @a2
(Prims.Inr__a @x1))
(= @a3
(Prims.Inr__b @x1)))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.either @a2
@a3))))))
; </end encoding >
; encoding sigelt Prims.is_Inl
; <Start encoding Prims.is_Inl>
(declare-fun Prims.is_Inl (Type Type Term) Term)
;;;;;;;;;;;;;;;;((either 'a 'b) -> Tot bool)
(declare-fun Typ_fun_313 () Type)
;;;;;;;;;;;;;;;;Typ_fun_313 kinding
(assert (HasKind Typ_fun_313
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_313)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_313)))))
;;;;;;;;;;;;;;;;Typ_fun_313 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_313)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.either @a2
@a3)))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_313)))))
(declare-fun Prims.is_Inl@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 316
(Term_constr_id Prims.is_Inl@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.is_Inl@tok
@a0)
@a1)
@x2)
(Prims.is_Inl @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.is_Inl@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_Inl@tok
Typ_fun_313))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Prims.either @a0
@a1)))
(HasType (Prims.is_Inl @a0
@a1
@x2)
Prims.bool))
:pattern ((Prims.is_Inl @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.is_Inl @a0
@a1
@x2)
(BoxBool (is-Prims.Inl @x2)))
:pattern ((Prims.is_Inl @a0
@a1
@x2)))))
; </end encoding Prims.is_Inl>
; encoding sigelt Prims.is_Inr
; <Start encoding Prims.is_Inr>
(declare-fun Prims.is_Inr (Type Type Term) Term)
(declare-fun Prims.is_Inr@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 318
(Term_constr_id Prims.is_Inr@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.is_Inr@tok
@a0)
@a1)
@x2)
(Prims.is_Inr @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.is_Inr@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_Inr@tok
Typ_fun_313))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Prims.either @a0
@a1)))
(HasType (Prims.is_Inr @a0
@a1
@x2)
Prims.bool))
:pattern ((Prims.is_Inr @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.is_Inr @a0
@a1
@x2)
(BoxBool (is-Prims.Inr @x2)))
:pattern ((Prims.is_Inr @a0
@a1
@x2)))))
; </end encoding Prims.is_Inr>
; encoding sigelt Prims.Inl.'a
; <Start encoding Prims.Inl.'a>
(declare-fun Prims.Inl._a (Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Inl._a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 322
(Type_constr_id Prims.Inl._a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT Prims.Inl._a@tok
@a0)
@a1)
@x2)
(Prims.Inl._a @a0
@a1
@x2))
:pattern ((ApplyTE (ApplyTT (ApplyTT Prims.Inl._a@tok
@a0)
@a1)
@x2)))))
(declare-fun Typ_refine_319 (Type Type) Type)
(assert (forall ((@a0 Type) (@a1 Type))
(! (HasKind (Typ_refine_319 @a0
@a1)
Kind_type)
:pattern ((HasKind (Typ_refine_319 @a0
@a1)
Kind_type)))))
;;;;;;;;;;;;;;;;_0_141:(either 'a 'b){(is_Inl _0_141)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type))
(! (iff (HasType @x1
(Typ_refine_319 @a2
@a3))
(and (HasType @x1
(Prims.either @a3
@a2))
(Valid (Prims.b2t (Prims.is_Inl @a3
@a2
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_319 @a2
@a3))))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Inl._a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Typ_refine_319 @a1
@a0)))
(HasKind (Prims.Inl._a @a0
@a1
@x2)
Kind_type))
:pattern ((Prims.Inl._a @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inl._a @a0
@a1
@x2)
(Prims.Inl__a @x2))
:pattern ((Prims.Inl._a @a0
@a1
@x2)))))
; </end encoding Prims.Inl.'a>
; encoding sigelt Prims.Inl.'b
; <Start encoding Prims.Inl.'b>
(declare-fun Prims.Inl._b (Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Inl._b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 324
(Type_constr_id Prims.Inl._b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT Prims.Inl._b@tok
@a0)
@a1)
@x2)
(Prims.Inl._b @a0
@a1
@x2))
:pattern ((ApplyTE (ApplyTT (ApplyTT Prims.Inl._b@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Inl._b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Typ_refine_319 @a1
@a0)))
(HasKind (Prims.Inl._b @a0
@a1
@x2)
Kind_type))
:pattern ((Prims.Inl._b @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inl._b @a0
@a1
@x2)
(Prims.Inl__b @x2))
:pattern ((Prims.Inl._b @a0
@a1
@x2)))))
; </end encoding Prims.Inl.'b>
; encoding sigelt Prims.Inl.v
; <Start encoding Prims.Inl.v>
(declare-fun Prims.Inl.v (Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:_0_141:(either 'a 'b){(is_Inl _0_141)} -> Tot 'a)
(declare-fun Typ_fun_326 () Type)
;;;;;;;;;;;;;;;;Typ_fun_326 kinding
(assert (HasKind Typ_fun_326
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_326)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_326)))))
;;;;;;;;;;;;;;;;Typ_fun_326 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_326)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Typ_refine_319 @a3
@a2)))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
@a2))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_326)))))
(declare-fun Prims.Inl.v@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 329
(Term_constr_id Prims.Inl.v@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.Inl.v@tok
@a0)
@a1)
@x2)
(Prims.Inl.v @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.Inl.v@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.Inl.v@tok
Typ_fun_326))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Typ_refine_319 @a1
@a0)))
(HasType (Prims.Inl.v @a0
@a1
@x2)
@a0))
:pattern ((Prims.Inl.v @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inl.v @a0
@a1
@x2)
(Prims.Inl_v @x2))
:pattern ((Prims.Inl.v @a0
@a1
@x2)))))
; </end encoding Prims.Inl.v>
; encoding sigelt Prims.Inr.'a
; <Start encoding Prims.Inr.'a>
(declare-fun Prims.Inr._a (Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Inr._a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 333
(Type_constr_id Prims.Inr._a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT Prims.Inr._a@tok
@a0)
@a1)
@x2)
(Prims.Inr._a @a0
@a1
@x2))
:pattern ((ApplyTE (ApplyTT (ApplyTT Prims.Inr._a@tok
@a0)
@a1)
@x2)))))
(declare-fun Typ_refine_330 (Type Type) Type)
(assert (forall ((@a0 Type) (@a1 Type))
(! (HasKind (Typ_refine_330 @a0
@a1)
Kind_type)
:pattern ((HasKind (Typ_refine_330 @a0
@a1)
Kind_type)))))
;;;;;;;;;;;;;;;;_0_143:(either 'a 'b){(is_Inr _0_143)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type))
(! (iff (HasType @x1
(Typ_refine_330 @a2
@a3))
(and (HasType @x1
(Prims.either @a3
@a2))
(Valid (Prims.b2t (Prims.is_Inr @a3
@a2
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_330 @a2
@a3))))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Inr._a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Typ_refine_330 @a1
@a0)))
(HasKind (Prims.Inr._a @a0
@a1
@x2)
Kind_type))
:pattern ((Prims.Inr._a @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inr._a @a0
@a1
@x2)
(Prims.Inr__a @x2))
:pattern ((Prims.Inr._a @a0
@a1
@x2)))))
; </end encoding Prims.Inr.'a>
; encoding sigelt Prims.Inr.'b
; <Start encoding Prims.Inr.'b>
(declare-fun Prims.Inr._b (Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Inr._b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 335
(Type_constr_id Prims.Inr._b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT Prims.Inr._b@tok
@a0)
@a1)
@x2)
(Prims.Inr._b @a0
@a1
@x2))
:pattern ((ApplyTE (ApplyTT (ApplyTT Prims.Inr._b@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Inr._b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Typ_refine_330 @a1
@a0)))
(HasKind (Prims.Inr._b @a0
@a1
@x2)
Kind_type))
:pattern ((Prims.Inr._b @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inr._b @a0
@a1
@x2)
(Prims.Inr__b @x2))
:pattern ((Prims.Inr._b @a0
@a1
@x2)))))
; </end encoding Prims.Inr.'b>
; encoding sigelt Prims.Inr.v
; <Start encoding Prims.Inr.v>
(declare-fun Prims.Inr.v (Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:_0_143:(either 'a 'b){(is_Inr _0_143)} -> Tot 'b)
(declare-fun Typ_fun_337 () Type)
;;;;;;;;;;;;;;;;Typ_fun_337 kinding
(assert (HasKind Typ_fun_337
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_337)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_337)))))
;;;;;;;;;;;;;;;;Typ_fun_337 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_337)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Typ_refine_330 @a3
@a2)))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
@a3))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_337)))))
(declare-fun Prims.Inr.v@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 340
(Term_constr_id Prims.Inr.v@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.Inr.v@tok
@a0)
@a1)
@x2)
(Prims.Inr.v @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.Inr.v@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.Inr.v@tok
Typ_fun_337))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Typ_refine_330 @a1
@a0)))
(HasType (Prims.Inr.v @a0
@a1
@x2)
@a1))
:pattern ((Prims.Inr.v @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.Inr.v @a0
@a1
@x2)
(Prims.Inr_v @x2))
:pattern ((Prims.Inr.v @a0
@a1
@x2)))))
; </end encoding Prims.Inr.v>
; encoding sigelt Prims.result, Prims.V, Prims.E, Prims.Err
; <Start encoding >
; <Start encoding Prims.result>
; <start constructor Prims.result>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.result (Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type))
(= 366
(Type_constr_id (Prims.result @a0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.result@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type))
(! (= (Prims.result@a0 (Prims.result @a0))
@a0)
:pattern ((Prims.result @a0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.result ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
366)
(= @a0
(Prims.result (Prims.result@a0 @a0)))))
; </end constructor Prims.result>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.result@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 367
(Type_constr_id Prims.result@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type))
(! (= (ApplyTT Prims.result@tok
@a0)
(Prims.result @a0))
:pattern ((ApplyTT Prims.result@tok
@a0)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.result@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasKind (Prims.result @a0)
Kind_type))
:pattern ((Prims.result @a0)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.result @a2))
(= (Prims.result @a2)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.result @a2))))))
; </end encoding Prims.result>
; <Start encoding Prims.V>
; <start constructor Prims.V>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.V (Type Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@x1 Term))
(= 373
(Term_constr_id (Prims.V @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.V_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.V_a (Prims.V @a0
@x1))
@a0)
:pattern ((Prims.V @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.V_v (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.V_v (Prims.V @a0
@x1))
@x1)
:pattern ((Prims.V @a0
@x1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.V ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
373)
(= @x0
(Prims.V (Prims.V_a @x0)
(Prims.V_v @x0)))))
; </end constructor Prims.V>
;;;;;;;;;;;;;;;;(v:a -> Tot (result a))
(declare-fun Typ_fun_375 () Type)
;;;;;;;;;;;;;;;;Typ_fun_375 kinding
(assert (HasKind Typ_fun_375
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_375)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_375)))))
;;;;;;;;;;;;;;;;Typ_fun_375 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_375)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
@a2))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
(Prims.result @a2)))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_375)))))
;;;;;;;;;;;;;;;;data constructor proxy: V
(declare-fun Prims.V@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 378
(Term_constr_id Prims.V@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.V@tok
Typ_fun_375))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.V@tok
@a0)
@x1)
(Prims.V @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.V@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasTypeFuel (SFuel @u0)
@x2
@a1))
(HasTypeFuel @u0
(Prims.V @a1
@x2)
(Prims.result @a1)))
:pattern ((HasTypeFuel @u0
(Prims.V @a1
@x2)
(Prims.result @a1))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.V @a1
@x2)
(Prims.result @a3))
(and (= @a1
@a3)
(HasKind @a1
Kind_type)
(HasTypeFuel @u0
@x2
@a1)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.V @a1
@x2)
(Prims.result @a3))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.V @a1
@x2)
(Prims.result @a3))
(Valid (Precedes @x2
(Prims.V @a1
@x2))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.V @a1
@x2)
(Prims.result @a3))))))
; </end encoding Prims.V>
; <Start encoding Prims.E>
; <start constructor Prims.E>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.E (Type Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@x1 Term))
(= 380
(Term_constr_id (Prims.E @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.E_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.E_a (Prims.E @a0
@x1))
@a0)
:pattern ((Prims.E @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.E_e (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.E_e (Prims.E @a0
@x1))
@x1)
:pattern ((Prims.E @a0
@x1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.E ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
380)
(= @x0
(Prims.E (Prims.E_a @x0)
(Prims.E_e @x0)))))
; </end constructor Prims.E>
;;;;;;;;;;;;;;;;(e:exn -> Tot (result a))
(declare-fun Typ_fun_382 () Type)
;;;;;;;;;;;;;;;;Typ_fun_382 kinding
(assert (HasKind Typ_fun_382
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_382)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_382)))))
;;;;;;;;;;;;;;;;Typ_fun_382 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_382)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
Prims.exn))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
(Prims.result @a2)))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_382)))))
;;;;;;;;;;;;;;;;data constructor proxy: E
(declare-fun Prims.E@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 385
(Term_constr_id Prims.E@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.E@tok
Typ_fun_382))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.E@tok
@a0)
@x1)
(Prims.E @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.E@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasTypeFuel (SFuel @u0)
@x2
Prims.exn))
(HasTypeFuel @u0
(Prims.E @a1
@x2)
(Prims.result @a1)))
:pattern ((HasTypeFuel @u0
(Prims.E @a1
@x2)
(Prims.result @a1))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.E @a1
@x2)
(Prims.result @a3))
(and (= @a1
@a3)
(HasKind @a1
Kind_type)
(HasTypeFuel @u0
@x2
Prims.exn)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.E @a1
@x2)
(Prims.result @a3))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.E @a1
@x2)
(Prims.result @a3))
(Valid (Precedes @x2
(Prims.E @a1
@x2))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.E @a1
@x2)
(Prims.result @a3))))))
; </end encoding Prims.E>
; <Start encoding Prims.Err>
; <start constructor Prims.Err>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Err (Type Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@x1 Term))
(= 387
(Term_constr_id (Prims.Err @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Err_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Err_a (Prims.Err @a0
@x1))
@a0)
:pattern ((Prims.Err @a0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Err_msg (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Err_msg (Prims.Err @a0
@x1))
@x1)
:pattern ((Prims.Err @a0
@x1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Err ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
387)
(= @x0
(Prims.Err (Prims.Err_a @x0)
(Prims.Err_msg @x0)))))
; </end constructor Prims.Err>
;;;;;;;;;;;;;;;;(msg:string -> Tot (result a))
(declare-fun Typ_fun_389 () Type)
;;;;;;;;;;;;;;;;Typ_fun_389 kinding
(assert (HasKind Typ_fun_389
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_389)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_389)))))
;;;;;;;;;;;;;;;;Typ_fun_389 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_389)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
Prims.string))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
(Prims.result @a2)))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_389)))))
;;;;;;;;;;;;;;;;data constructor proxy: Err
(declare-fun Prims.Err@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 392
(Term_constr_id Prims.Err@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.Err@tok
Typ_fun_389))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.Err@tok
@a0)
@x1)
(Prims.Err @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.Err@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasTypeFuel (SFuel @u0)
@x2
Prims.string))
(HasTypeFuel @u0
(Prims.Err @a1
@x2)
(Prims.result @a1)))
:pattern ((HasTypeFuel @u0
(Prims.Err @a1
@x2)
(Prims.result @a1))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Err @a1
@x2)
(Prims.result @a3))
(and (= @a1
@a3)
(HasKind @a1
Kind_type)
(HasTypeFuel @u0
@x2
Prims.string)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Err @a1
@x2)
(Prims.result @a3))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@x2 Term) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.Err @a1
@x2)
(Prims.result @a3))
(Valid (Precedes @x2
(Prims.Err @a1
@x2))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.Err @a1
@x2)
(Prims.result @a3))))))
; </end encoding Prims.Err>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.result @a2))
(or (and (is-Prims.V @x1)
(= @a2
(Prims.V_a @x1)))
(and (is-Prims.E @x1)
(= @a2
(Prims.E_a @x1)))
(and (is-Prims.Err @x1)
(= @a2
(Prims.Err_a @x1)))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.result @a2))))))
; </end encoding >
; encoding sigelt Prims.is_V
; <Start encoding Prims.is_V>
(declare-fun Prims.is_V (Type Term) Term)
;;;;;;;;;;;;;;;;((result a) -> Tot bool)
(declare-fun Typ_fun_394 () Type)
;;;;;;;;;;;;;;;;Typ_fun_394 kinding
(assert (HasKind Typ_fun_394
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_394)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_394)))))
;;;;;;;;;;;;;;;;Typ_fun_394 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_394)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
(Prims.result @a2)))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
Prims.bool))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_394)))))
(declare-fun Prims.is_V@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 397
(Term_constr_id Prims.is_V@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.is_V@tok
@a0)
@x1)
(Prims.is_V @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.is_V@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_V@tok
Typ_fun_394))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Prims.result @a0)))
(HasType (Prims.is_V @a0
@x1)
Prims.bool))
:pattern ((Prims.is_V @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.is_V @a0
@x1)
(BoxBool (is-Prims.V @x1)))
:pattern ((Prims.is_V @a0
@x1)))))
; </end encoding Prims.is_V>
; encoding sigelt Prims.is_E
; <Start encoding Prims.is_E>
(declare-fun Prims.is_E (Type Term) Term)
(declare-fun Prims.is_E@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 399
(Term_constr_id Prims.is_E@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.is_E@tok
@a0)
@x1)
(Prims.is_E @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.is_E@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_E@tok
Typ_fun_394))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Prims.result @a0)))
(HasType (Prims.is_E @a0
@x1)
Prims.bool))
:pattern ((Prims.is_E @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.is_E @a0
@x1)
(BoxBool (is-Prims.E @x1)))
:pattern ((Prims.is_E @a0
@x1)))))
; </end encoding Prims.is_E>
; encoding sigelt Prims.is_Err
; <Start encoding Prims.is_Err>
(declare-fun Prims.is_Err (Type Term) Term)
(declare-fun Prims.is_Err@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 401
(Term_constr_id Prims.is_Err@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.is_Err@tok
@a0)
@x1)
(Prims.is_Err @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.is_Err@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_Err@tok
Typ_fun_394))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Prims.result @a0)))
(HasType (Prims.is_Err @a0
@x1)
Prims.bool))
:pattern ((Prims.is_Err @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.is_Err @a0
@x1)
(BoxBool (is-Prims.Err @x1)))
:pattern ((Prims.is_Err @a0
@x1)))))
; </end encoding Prims.is_Err>
; encoding sigelt Prims.V.a
; <Start encoding Prims.V.a>
(declare-fun Prims.V.a (Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.V.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 405
(Type_constr_id Prims.V.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyTE (ApplyTT Prims.V.a@tok
@a0)
@x1)
(Prims.V.a @a0
@x1))
:pattern ((ApplyTE (ApplyTT Prims.V.a@tok
@a0)
@x1)))))
(declare-fun Typ_refine_402 (Type) Type)
(assert (forall ((@a0 Type))
(! (HasKind (Typ_refine_402 @a0)
Kind_type)
:pattern ((HasKind (Typ_refine_402 @a0)
Kind_type)))))
;;;;;;;;;;;;;;;;_0_149:(result a){(is_V _0_149)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (iff (HasType @x1
(Typ_refine_402 @a2))
(and (HasType @x1
(Prims.result @a2))
(Valid (Prims.b2t (Prims.is_V @a2
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_402 @a2))))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.V.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_402 @a0)))
(HasKind (Prims.V.a @a0
@x1)
Kind_type))
:pattern ((Prims.V.a @a0
@x1)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.V.a @a0
@x1)
(Prims.V_a @x1))
:pattern ((Prims.V.a @a0
@x1)))))
; </end encoding Prims.V.a>
; encoding sigelt Prims.V.v
; <Start encoding Prims.V.v>
(declare-fun Prims.V.v (Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:_0_149:(result a){(is_V _0_149)} -> Tot a)
(declare-fun Typ_fun_407 () Type)
;;;;;;;;;;;;;;;;Typ_fun_407 kinding
(assert (HasKind Typ_fun_407
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_407)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_407)))))
;;;;;;;;;;;;;;;;Typ_fun_407 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_407)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
(Typ_refine_402 @a2)))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
@a2))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_407)))))
(declare-fun Prims.V.v@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 410
(Term_constr_id Prims.V.v@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.V.v@tok
@a0)
@x1)
(Prims.V.v @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.V.v@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.V.v@tok
Typ_fun_407))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_402 @a0)))
(HasType (Prims.V.v @a0
@x1)
@a0))
:pattern ((Prims.V.v @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.V.v @a0
@x1)
(Prims.V_v @x1))
:pattern ((Prims.V.v @a0
@x1)))))
; </end encoding Prims.V.v>
; encoding sigelt Prims.E.a
; <Start encoding Prims.E.a>
(declare-fun Prims.E.a (Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.E.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 414
(Type_constr_id Prims.E.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyTE (ApplyTT Prims.E.a@tok
@a0)
@x1)
(Prims.E.a @a0
@x1))
:pattern ((ApplyTE (ApplyTT Prims.E.a@tok
@a0)
@x1)))))
(declare-fun Typ_refine_411 (Type) Type)
(assert (forall ((@a0 Type))
(! (HasKind (Typ_refine_411 @a0)
Kind_type)
:pattern ((HasKind (Typ_refine_411 @a0)
Kind_type)))))
;;;;;;;;;;;;;;;;_0_151:(result a){(is_E _0_151)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (iff (HasType @x1
(Typ_refine_411 @a2))
(and (HasType @x1
(Prims.result @a2))
(Valid (Prims.b2t (Prims.is_E @a2
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_411 @a2))))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.E.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_411 @a0)))
(HasKind (Prims.E.a @a0
@x1)
Kind_type))
:pattern ((Prims.E.a @a0
@x1)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.E.a @a0
@x1)
(Prims.E_a @x1))
:pattern ((Prims.E.a @a0
@x1)))))
; </end encoding Prims.E.a>
; encoding sigelt Prims.E.e
; <Start encoding Prims.E.e>
(declare-fun Prims.E.e (Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:_0_151:(result a){(is_E _0_151)} -> Tot exn)
(declare-fun Typ_fun_416 () Type)
;;;;;;;;;;;;;;;;Typ_fun_416 kinding
(assert (HasKind Typ_fun_416
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_416)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_416)))))
;;;;;;;;;;;;;;;;Typ_fun_416 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_416)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
(Typ_refine_411 @a2)))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
Prims.exn))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_416)))))
(declare-fun Prims.E.e@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 419
(Term_constr_id Prims.E.e@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.E.e@tok
@a0)
@x1)
(Prims.E.e @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.E.e@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.E.e@tok
Typ_fun_416))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_411 @a0)))
(HasType (Prims.E.e @a0
@x1)
Prims.exn))
:pattern ((Prims.E.e @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.E.e @a0
@x1)
(Prims.E_e @x1))
:pattern ((Prims.E.e @a0
@x1)))))
; </end encoding Prims.E.e>
; encoding sigelt Prims.Err.a
; <Start encoding Prims.Err.a>
(declare-fun Prims.Err.a (Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Err.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 423
(Type_constr_id Prims.Err.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyTE (ApplyTT Prims.Err.a@tok
@a0)
@x1)
(Prims.Err.a @a0
@x1))
:pattern ((ApplyTE (ApplyTT Prims.Err.a@tok
@a0)
@x1)))))
(declare-fun Typ_refine_420 (Type) Type)
(assert (forall ((@a0 Type))
(! (HasKind (Typ_refine_420 @a0)
Kind_type)
:pattern ((HasKind (Typ_refine_420 @a0)
Kind_type)))))
;;;;;;;;;;;;;;;;_0_153:(result a){(is_Err _0_153)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (iff (HasType @x1
(Typ_refine_420 @a2))
(and (HasType @x1
(Prims.result @a2))
(Valid (Prims.b2t (Prims.is_Err @a2
@x1)))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_420 @a2))))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Err.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_420 @a0)))
(HasKind (Prims.Err.a @a0
@x1)
Kind_type))
:pattern ((Prims.Err.a @a0
@x1)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Err.a @a0
@x1)
(Prims.Err_a @x1))
:pattern ((Prims.Err.a @a0
@x1)))))
; </end encoding Prims.Err.a>
; encoding sigelt Prims.Err.msg
; <Start encoding Prims.Err.msg>
(declare-fun Prims.Err.msg (Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:_0_153:(result a){(is_Err _0_153)} -> Tot string)
(declare-fun Typ_fun_425 () Type)
;;;;;;;;;;;;;;;;Typ_fun_425 kinding
(assert (HasKind Typ_fun_425
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_425)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_425)))))
;;;;;;;;;;;;;;;;Typ_fun_425 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_425)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
(Typ_refine_420 @a2)))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
Prims.string))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_425)))))
(declare-fun Prims.Err.msg@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 428
(Term_constr_id Prims.Err.msg@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.Err.msg@tok
@a0)
@x1)
(Prims.Err.msg @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.Err.msg@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.Err.msg@tok
Typ_fun_425))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
(Typ_refine_420 @a0)))
(HasType (Prims.Err.msg @a0
@x1)
Prims.string))
:pattern ((Prims.Err.msg @a0
@x1)))))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (Prims.Err.msg @a0
@x1)
(Prims.Err_msg @x1))
:pattern ((Prims.Err.msg @a0
@x1)))))
; </end encoding Prims.Err.msg>
; encoding sigelt Prims.DIV
; <Skipped Prims.DIV/>
; encoding sigelt Prims.Div
; <Skipped Prims.Div/>
; encoding sigelt Prims.Dv
; <Skipped Prims.Dv/>
; encoding sigelt Prims.STPre_h
; <Skipped Prims.STPre_h/>
; encoding sigelt Prims.STPost_h
; <Skipped Prims.STPost_h/>
; encoding sigelt Prims.STWP_h
; <Skipped Prims.STWP_h/>
; encoding sigelt Prims.st_return
; <Skipped Prims.st_return/>
; encoding sigelt Prims.st_bind_wp
; <Skipped Prims.st_bind_wp/>
; encoding sigelt Prims.st_bind_wlp
; <Skipped Prims.st_bind_wlp/>
; encoding sigelt Prims.st_if_then_else
; <Skipped Prims.st_if_then_else/>
; encoding sigelt Prims.st_ite_wlp
; <Skipped Prims.st_ite_wlp/>
; encoding sigelt Prims.st_ite_wp
; <Skipped Prims.st_ite_wp/>
; encoding sigelt Prims.st_wp_binop
; <Skipped Prims.st_wp_binop/>
; encoding sigelt Prims.st_wp_as_type
; <Skipped Prims.st_wp_as_type/>
; encoding sigelt Prims.st_close_wp
; <Skipped Prims.st_close_wp/>
; encoding sigelt Prims.st_close_wp_t
; <Skipped Prims.st_close_wp_t/>
; encoding sigelt Prims.st_assert_p
; <Skipped Prims.st_assert_p/>
; encoding sigelt Prims.st_assume_p
; <Skipped Prims.st_assume_p/>
; encoding sigelt Prims.st_null_wp
; <Skipped Prims.st_null_wp/>
; encoding sigelt Prims.st_trivial
; <Skipped Prims.st_trivial/>
; encoding sigelt Prims.STATE_h
; <Skipped Prims.STATE_h/>
; encoding sigelt Prims.heap
; <Start encoding Prims.heap>
; <start constructor Prims.heap>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.heap () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 429
(Type_constr_id Prims.heap)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.heap ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
429)
(= @a0
Prims.heap)))
; </end constructor Prims.heap>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.heap
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.heap)
(= Prims.heap
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.heap)))))
; </end encoding Prims.heap>
; encoding sigelt Prims.STPre
; <Skipped Prims.STPre/>
; encoding sigelt Prims.STPost
; <Skipped Prims.STPost/>
; encoding sigelt Prims.STWP
; <Skipped Prims.STWP/>
; encoding sigelt Prims.STATE
; <Skipped Prims.STATE/>
; encoding sigelt Prims.State
; <Skipped Prims.State/>
; encoding sigelt Prims.ST
; <Skipped Prims.ST/>
; encoding sigelt Prims.St
; <Skipped Prims.St/>
; encoding sigelt Prims.ExPre
; <Skipped Prims.ExPre/>
; encoding sigelt Prims.ExPost
; <Skipped Prims.ExPost/>
; encoding sigelt Prims.ExWP
; <Skipped Prims.ExWP/>
; encoding sigelt Prims.ex_return
; <Skipped Prims.ex_return/>
; encoding sigelt Prims.ex_bind_wlp
; <Skipped Prims.ex_bind_wlp/>
; encoding sigelt Prims.ex_bind_wp
; <Skipped Prims.ex_bind_wp/>
; encoding sigelt Prims.ex_if_then_else
; <Skipped Prims.ex_if_then_else/>
; encoding sigelt Prims.ex_ite_wlp
; <Skipped Prims.ex_ite_wlp/>
; encoding sigelt Prims.ex_ite_wp
; <Skipped Prims.ex_ite_wp/>
; encoding sigelt Prims.ex_wp_binop
; <Skipped Prims.ex_wp_binop/>
; encoding sigelt Prims.ex_wp_as_type
; <Skipped Prims.ex_wp_as_type/>
; encoding sigelt Prims.ex_close_wp
; <Skipped Prims.ex_close_wp/>
; encoding sigelt Prims.ex_close_wp_t
; <Skipped Prims.ex_close_wp_t/>
; encoding sigelt Prims.ex_assert_p
; <Skipped Prims.ex_assert_p/>
; encoding sigelt Prims.ex_assume_p
; <Skipped Prims.ex_assume_p/>
; encoding sigelt Prims.ex_null_wp
; <Skipped Prims.ex_null_wp/>
; encoding sigelt Prims.ex_trivial
; <Skipped Prims.ex_trivial/>
; encoding sigelt Prims.EXN
; <Skipped Prims.EXN/>
; encoding sigelt Prims.Exn
; <Skipped Prims.Exn/>
; encoding sigelt Prims.Ex
; <Skipped Prims.Ex/>
; encoding sigelt Prims.AllPre_h
; <Skipped Prims.AllPre_h/>
; encoding sigelt Prims.AllPost_h
; <Skipped Prims.AllPost_h/>
; encoding sigelt Prims.AllWP_h
; <Skipped Prims.AllWP_h/>
; encoding sigelt Prims.all_return
; <Skipped Prims.all_return/>
; encoding sigelt Prims.all_bind_wp
; <Skipped Prims.all_bind_wp/>
; encoding sigelt Prims.all_bind_wlp
; <Skipped Prims.all_bind_wlp/>
; encoding sigelt Prims.all_if_then_else
; <Skipped Prims.all_if_then_else/>
; encoding sigelt Prims.all_ite_wlp
; <Skipped Prims.all_ite_wlp/>
; encoding sigelt Prims.all_ite_wp
; <Skipped Prims.all_ite_wp/>
; encoding sigelt Prims.all_wp_binop
; <Skipped Prims.all_wp_binop/>
; encoding sigelt Prims.all_wp_as_type
; <Skipped Prims.all_wp_as_type/>
; encoding sigelt Prims.all_close_wp
; <Skipped Prims.all_close_wp/>
; encoding sigelt Prims.all_close_wp_t
; <Skipped Prims.all_close_wp_t/>
; encoding sigelt Prims.all_assert_p
; <Skipped Prims.all_assert_p/>
; encoding sigelt Prims.all_assume_p
; <Skipped Prims.all_assume_p/>
; encoding sigelt Prims.all_null_wp
; <Skipped Prims.all_null_wp/>
; encoding sigelt Prims.all_trivial
; <Skipped Prims.all_trivial/>
; encoding sigelt Prims.ALL_h
; <Skipped Prims.ALL_h/>
; encoding sigelt Prims.AllPre
; <Skipped Prims.AllPre/>
; encoding sigelt Prims.AllPost
; <Skipped Prims.AllPost/>
; encoding sigelt Prims.AllWP
; <Skipped Prims.AllWP/>
; encoding sigelt Prims.ALL
; <Skipped Prims.ALL/>
; encoding sigelt Prims.All
; <Skipped Prims.All/>
; encoding sigelt Prims.ML
; <Skipped Prims.ML/>
; encoding sigelt
; <Skipped />
; encoding sigelt
; <Skipped />
; encoding sigelt
; <Skipped />
; encoding sigelt
; <Skipped />
; encoding sigelt
; <Skipped />
; encoding sigelt Prims.lex_t, Prims.LexTop, Prims.LexCons
; <Start encoding >
; <Start encoding Prims.lex_t>
; <start constructor Prims.lex_t>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.lex_t () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 444
(Type_constr_id Prims.lex_t)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.lex_t ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
444)
(= @a0
Prims.lex_t)))
; </end constructor Prims.lex_t>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Prims.lex_t
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Prims.lex_t)
(= Prims.lex_t
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Prims.lex_t)))))
; </end encoding Prims.lex_t>
; <Start encoding Prims.LexTop>
; <start constructor Prims.LexTop>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.LexTop () Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 450
(Term_constr_id Prims.LexTop)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.LexTop ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
450)
(= @x0
Prims.LexTop)))
; </end constructor Prims.LexTop>
;;;;;;;;;;;;;;;;data constructor proxy: LexTop
(declare-fun Prims.LexTop@tok () Term)
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.LexTop@tok
Prims.lex_t))
;;;;;;;;;;;;;;;;equality for proxy
(assert (= Prims.LexTop@tok
Prims.LexTop))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel))
(! (HasTypeFuel @u0
Prims.LexTop
Prims.lex_t)
:pattern ((HasTypeFuel @u0
Prims.LexTop
Prims.lex_t)))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert true)
;;;;;;;;;;;;;;;;lextop is top
(assert (forall ((@x0 Term))
(! (implies (is-LexCons @x0)
(Valid (Precedes @x0
Prims.LexTop)))
:pattern ((Valid (Precedes @x0
Prims.LexTop))))))
; </end encoding Prims.LexTop>
; <Skipped Prims.LexCons/>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
Prims.lex_t)
(or (is-Prims.LexTop @x1)
(is-Prims.LexCons @x1)))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
Prims.lex_t)))))
; </end encoding >
; encoding sigelt Prims.is_LexTop
; <Start encoding Prims.is_LexTop>
(declare-fun Prims.is_LexTop (Term) Term)
;;;;;;;;;;;;;;;;(lex_t -> Tot bool)
(declare-fun Typ_fun_453 () Type)
;;;;;;;;;;;;;;;;Typ_fun_453 kinding
(assert (HasKind Typ_fun_453
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_453)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_453)))))
;;;;;;;;;;;;;;;;Typ_fun_453 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_453)
(forall ((@x2 Term))
(! (implies (HasType @x2
Prims.lex_t)
(HasType (ApplyEE @x1
@x2)
Prims.bool))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_453)))))
(declare-fun Prims.is_LexTop@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 456
(Term_constr_id Prims.is_LexTop@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Prims.is_LexTop@tok
@x0)
(Prims.is_LexTop @x0))
:pattern ((ApplyEE Prims.is_LexTop@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_LexTop@tok
Typ_fun_453))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Prims.lex_t)
(HasType (Prims.is_LexTop @x0)
Prims.bool))
:pattern ((Prims.is_LexTop @x0)))))
(assert (forall ((@x0 Term))
(! (= (Prims.is_LexTop @x0)
(BoxBool (is-Prims.LexTop @x0)))
:pattern ((Prims.is_LexTop @x0)))))
; </end encoding Prims.is_LexTop>
; encoding sigelt Prims.is_LexCons
; <Start encoding Prims.is_LexCons>
(declare-fun Prims.is_LexCons (Term) Term)
(declare-fun Prims.is_LexCons@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 458
(Term_constr_id Prims.is_LexCons@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Prims.is_LexCons@tok
@x0)
(Prims.is_LexCons @x0))
:pattern ((ApplyEE Prims.is_LexCons@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_LexCons@tok
Typ_fun_453))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Prims.lex_t)
(HasType (Prims.is_LexCons @x0)
Prims.bool))
:pattern ((Prims.is_LexCons @x0)))))
(assert (forall ((@x0 Term))
(! (= (Prims.is_LexCons @x0)
(BoxBool (is-Prims.LexCons @x0)))
:pattern ((Prims.is_LexCons @x0)))))
; </end encoding Prims.is_LexCons>
; encoding sigelt Prims.Tuple2, Prims.MkTuple2
; <Start encoding >
; <Start encoding Prims.Tuple2>
; <start constructor Prims.Tuple2>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Tuple2 (Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type))
(= 470
(Type_constr_id (Prims.Tuple2 @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple2@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Prims.Tuple2@a0 (Prims.Tuple2 @a0
@a1))
@a0)
:pattern ((Prims.Tuple2 @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple2@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Prims.Tuple2@a1 (Prims.Tuple2 @a0
@a1))
@a1)
:pattern ((Prims.Tuple2 @a0
@a1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Tuple2 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
470)
(= @a0
(Prims.Tuple2 (Prims.Tuple2@a0 @a0)
(Prims.Tuple2@a1 @a0)))))
; </end constructor Prims.Tuple2>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Tuple2@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 471
(Type_constr_id Prims.Tuple2@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.Tuple2@tok
@a0)
@a1)
(Prims.Tuple2 @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.Tuple2@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Tuple2@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type))
(HasKind (Prims.Tuple2 @a0
@a1)
Kind_type))
:pattern ((Prims.Tuple2 @a0
@a1)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.Tuple2 @a2
@a3))
(= (Prims.Tuple2 @a2
@a3)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.Tuple2 @a2
@a3))))))
; </end encoding Prims.Tuple2>
; <Start encoding Prims.MkTuple2>
; <start constructor Prims.MkTuple2>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkTuple2 (Type Type Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(= 477
(Term_constr_id (Prims.MkTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple2__a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (Prims.MkTuple2__a (Prims.MkTuple2 @a0
@a1
@x2
@x3))
@a0)
:pattern ((Prims.MkTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple2__b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (Prims.MkTuple2__b (Prims.MkTuple2 @a0
@a1
@x2
@x3))
@a1)
:pattern ((Prims.MkTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple2__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (Prims.MkTuple2__1 (Prims.MkTuple2 @a0
@a1
@x2
@x3))
@x2)
:pattern ((Prims.MkTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple2__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (Prims.MkTuple2__2 (Prims.MkTuple2 @a0
@a1
@x2
@x3))
@x3)
:pattern ((Prims.MkTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkTuple2 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
477)
(= @x0
(Prims.MkTuple2 (Prims.MkTuple2__a @x0)
(Prims.MkTuple2__b @x0)
(Prims.MkTuple2__1 @x0)
(Prims.MkTuple2__2 @x0)))))
; </end constructor Prims.MkTuple2>
;;;;;;;;;;;;;;;;(_1:'a -> _2:'b -> Tot (Tuple2 'a 'b))
(declare-fun Typ_fun_479 () Type)
;;;;;;;;;;;;;;;;Typ_fun_479 kinding
(assert (HasKind Typ_fun_479
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_479)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_479)))))
;;;;;;;;;;;;;;;;Typ_fun_479 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_479)
(forall ((@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
@a2)
(HasType @x5
@a3))
(HasType (ApplyEE (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
@x5)
(Prims.Tuple2 @a2
@a3)))
:pattern ((ApplyEE (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_479)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkTuple2
(declare-fun Prims.MkTuple2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 482
(Term_constr_id Prims.MkTuple2@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkTuple2@tok
Typ_fun_479))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (ApplyEE (ApplyEE (ApplyET (ApplyET Prims.MkTuple2@tok
@a0)
@a1)
@x2)
@x3)
(Prims.MkTuple2 @a0
@a1
@x2
@x3))
:pattern ((ApplyEE (ApplyEE (ApplyET (ApplyET Prims.MkTuple2@tok
@a0)
@a1)
@x2)
@x3)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasTypeFuel (SFuel @u0)
@x3
@a1)
(HasTypeFuel (SFuel @u0)
@x4
@a2))
(HasTypeFuel @u0
(Prims.MkTuple2 @a1
@a2
@x3
@x4)
(Prims.Tuple2 @a1
@a2)))
:pattern ((HasTypeFuel @u0
(Prims.MkTuple2 @a1
@a2
@x3
@x4)
(Prims.Tuple2 @a1
@a2))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@a5 Type) (@a6 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple2 @a1
@a2
@x3
@x4)
(Prims.Tuple2 @a5
@a6))
(and (= @a2
@a6)
(= @a1
@a5)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasTypeFuel @u0
@x3
@a1)
(HasTypeFuel @u0
@x4
@a2)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple2 @a1
@a2
@x3
@x4)
(Prims.Tuple2 @a5
@a6))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@a5 Type) (@a6 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple2 @a1
@a2
@x3
@x4)
(Prims.Tuple2 @a5
@a6))
(and (Valid (Precedes @x3
(Prims.MkTuple2 @a1
@a2
@x3
@x4)))
(Valid (Precedes @x4
(Prims.MkTuple2 @a1
@a2
@x3
@x4)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple2 @a1
@a2
@x3
@x4)
(Prims.Tuple2 @a5
@a6))))))
; </end encoding Prims.MkTuple2>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple2 @a2
@a3))
(and (is-Prims.MkTuple2 @x1)
(= @a2
(Prims.MkTuple2__a @x1))
(= @a3
(Prims.MkTuple2__b @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple2 @a2
@a3))))))
; </end encoding >
; encoding sigelt Prims.is_MkTuple2
; <Start encoding Prims.is_MkTuple2>
(declare-fun Prims.is_MkTuple2 (Type Type Term) Term)
;;;;;;;;;;;;;;;;((Tuple2 'a 'b) -> Tot bool)
(declare-fun Typ_fun_484 () Type)
;;;;;;;;;;;;;;;;Typ_fun_484 kinding
(assert (HasKind Typ_fun_484
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_484)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_484)))))
;;;;;;;;;;;;;;;;Typ_fun_484 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_484)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple2 @a2
@a3)))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_484)))))
(declare-fun Prims.is_MkTuple2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 487
(Term_constr_id Prims.is_MkTuple2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.is_MkTuple2@tok
@a0)
@a1)
@x2)
(Prims.is_MkTuple2 @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.is_MkTuple2@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkTuple2@tok
Typ_fun_484))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Prims.Tuple2 @a0
@a1)))
(HasType (Prims.is_MkTuple2 @a0
@a1
@x2)
Prims.bool))
:pattern ((Prims.is_MkTuple2 @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.is_MkTuple2 @a0
@a1
@x2)
(BoxBool (is-Prims.MkTuple2 @x2)))
:pattern ((Prims.is_MkTuple2 @a0
@a1
@x2)))))
; </end encoding Prims.is_MkTuple2>
; encoding sigelt Prims.MkTuple2.'a
; <Start encoding Prims.MkTuple2.'a>
(declare-fun Prims.MkTuple2._a (Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple2._a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 489
(Type_constr_id Prims.MkTuple2._a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT Prims.MkTuple2._a@tok
@a0)
@a1)
@x2)
(Prims.MkTuple2._a @a0
@a1
@x2))
:pattern ((ApplyTE (ApplyTT (ApplyTT Prims.MkTuple2._a@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple2._a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Prims.Tuple2 @a0
@a1)))
(HasKind (Prims.MkTuple2._a @a0
@a1
@x2)
Kind_type))
:pattern ((Prims.MkTuple2._a @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.MkTuple2._a @a0
@a1
@x2)
(Prims.MkTuple2__a @x2))
:pattern ((Prims.MkTuple2._a @a0
@a1
@x2)))))
; </end encoding Prims.MkTuple2.'a>
; encoding sigelt Prims.MkTuple2.'b
; <Start encoding Prims.MkTuple2.'b>
(declare-fun Prims.MkTuple2._b (Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple2._b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 491
(Type_constr_id Prims.MkTuple2._b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT Prims.MkTuple2._b@tok
@a0)
@a1)
@x2)
(Prims.MkTuple2._b @a0
@a1
@x2))
:pattern ((ApplyTE (ApplyTT (ApplyTT Prims.MkTuple2._b@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple2._b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Prims.Tuple2 @a0
@a1)))
(HasKind (Prims.MkTuple2._b @a0
@a1
@x2)
Kind_type))
:pattern ((Prims.MkTuple2._b @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.MkTuple2._b @a0
@a1
@x2)
(Prims.MkTuple2__b @x2))
:pattern ((Prims.MkTuple2._b @a0
@a1
@x2)))))
; </end encoding Prims.MkTuple2.'b>
; encoding sigelt Prims.MkTuple2._1
; <Start encoding Prims.MkTuple2._1>
(declare-fun Prims.MkTuple2._1 (Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple2 'a 'b) -> Tot 'a)
(declare-fun Typ_fun_493 () Type)
;;;;;;;;;;;;;;;;Typ_fun_493 kinding
(assert (HasKind Typ_fun_493
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_493)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_493)))))
;;;;;;;;;;;;;;;;Typ_fun_493 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_493)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple2 @a2
@a3)))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
@a2))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_493)))))
(declare-fun Prims.MkTuple2._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 496
(Term_constr_id Prims.MkTuple2._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.MkTuple2._1@tok
@a0)
@a1)
@x2)
(Prims.MkTuple2._1 @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.MkTuple2._1@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple2._1@tok
Typ_fun_493))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Prims.Tuple2 @a0
@a1)))
(HasType (Prims.MkTuple2._1 @a0
@a1
@x2)
@a0))
:pattern ((Prims.MkTuple2._1 @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.MkTuple2._1 @a0
@a1
@x2)
(Prims.MkTuple2__1 @x2))
:pattern ((Prims.MkTuple2._1 @a0
@a1
@x2)))))
; </end encoding Prims.MkTuple2._1>
; encoding sigelt Prims.MkTuple2._2
; <Start encoding Prims.MkTuple2._2>
(declare-fun Prims.MkTuple2._2 (Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple2 'a 'b) -> Tot 'b)
(declare-fun Typ_fun_498 () Type)
;;;;;;;;;;;;;;;;Typ_fun_498 kinding
(assert (HasKind Typ_fun_498
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_498)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_498)))))
;;;;;;;;;;;;;;;;Typ_fun_498 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_498)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple2 @a2
@a3)))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
@a3))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_498)))))
(declare-fun Prims.MkTuple2._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 501
(Term_constr_id Prims.MkTuple2._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.MkTuple2._2@tok
@a0)
@a1)
@x2)
(Prims.MkTuple2._2 @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.MkTuple2._2@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple2._2@tok
Typ_fun_498))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Prims.Tuple2 @a0
@a1)))
(HasType (Prims.MkTuple2._2 @a0
@a1
@x2)
@a1))
:pattern ((Prims.MkTuple2._2 @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.MkTuple2._2 @a0
@a1
@x2)
(Prims.MkTuple2__2 @x2))
:pattern ((Prims.MkTuple2._2 @a0
@a1
@x2)))))
; </end encoding Prims.MkTuple2._2>
; encoding sigelt Prims.Tuple3, Prims.MkTuple3
; <Start encoding >
; <Start encoding Prims.Tuple3>
; <start constructor Prims.Tuple3>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Tuple3 (Type Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(= 513
(Type_constr_id (Prims.Tuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple3@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (= (Prims.Tuple3@a0 (Prims.Tuple3 @a0
@a1
@a2))
@a0)
:pattern ((Prims.Tuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple3@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (= (Prims.Tuple3@a1 (Prims.Tuple3 @a0
@a1
@a2))
@a1)
:pattern ((Prims.Tuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple3@a2 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (= (Prims.Tuple3@a2 (Prims.Tuple3 @a0
@a1
@a2))
@a2)
:pattern ((Prims.Tuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Tuple3 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
513)
(= @a0
(Prims.Tuple3 (Prims.Tuple3@a0 @a0)
(Prims.Tuple3@a1 @a0)
(Prims.Tuple3@a2 @a0)))))
; </end constructor Prims.Tuple3>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Tuple3@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 514
(Type_constr_id Prims.Tuple3@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (= (ApplyTT (ApplyTT (ApplyTT Prims.Tuple3@tok
@a0)
@a1)
@a2)
(Prims.Tuple3 @a0
@a1
@a2))
:pattern ((ApplyTT (ApplyTT (ApplyTT Prims.Tuple3@tok
@a0)
@a1)
@a2)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Tuple3@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type))
(HasKind (Prims.Tuple3 @a0
@a1
@a2)
Kind_type))
:pattern ((Prims.Tuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type) (@a4 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.Tuple3 @a2
@a3
@a4))
(= (Prims.Tuple3 @a2
@a3
@a4)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.Tuple3 @a2
@a3
@a4))))))
; </end encoding Prims.Tuple3>
; <Start encoding Prims.MkTuple3>
; <start constructor Prims.MkTuple3>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkTuple3 (Type Type Type Term Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(= 520
(Term_constr_id (Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple3__a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkTuple3__a (Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@a0)
:pattern ((Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple3__b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkTuple3__b (Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@a1)
:pattern ((Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple3__c (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkTuple3__c (Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@a2)
:pattern ((Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple3__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkTuple3__1 (Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@x3)
:pattern ((Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple3__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkTuple3__2 (Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@x4)
:pattern ((Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple3__3 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkTuple3__3 (Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@x5)
:pattern ((Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkTuple3 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
520)
(= @x0
(Prims.MkTuple3 (Prims.MkTuple3__a @x0)
(Prims.MkTuple3__b @x0)
(Prims.MkTuple3__c @x0)
(Prims.MkTuple3__1 @x0)
(Prims.MkTuple3__2 @x0)
(Prims.MkTuple3__3 @x0)))))
; </end constructor Prims.MkTuple3>
;;;;;;;;;;;;;;;;(_1:'a -> _2:'b -> _3:'c -> Tot (Tuple3 'a 'b 'c))
(declare-fun Typ_fun_522 () Type)
;;;;;;;;;;;;;;;;Typ_fun_522 kinding
(assert (HasKind Typ_fun_522
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_522)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_522)))))
;;;;;;;;;;;;;;;;Typ_fun_522 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_522)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
@a2)
(HasType @x6
@a3)
(HasType @x7
@a4))
(HasType (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
@x6)
@x7)
(Prims.Tuple3 @a2
@a3
@a4)))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
@x6)
@x7)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_522)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkTuple3
(declare-fun Prims.MkTuple3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 525
(Term_constr_id Prims.MkTuple3@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkTuple3@tok
Typ_fun_522))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkTuple3@tok
@a0)
@a1)
@a2)
@x3)
@x4)
@x5)
(Prims.MkTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkTuple3@tok
@a0)
@a1)
@a2)
@x3)
@x4)
@x5)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasTypeFuel (SFuel @u0)
@x4
@a1)
(HasTypeFuel (SFuel @u0)
@x5
@a2)
(HasTypeFuel (SFuel @u0)
@x6
@a3))
(HasTypeFuel @u0
(Prims.MkTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.Tuple3 @a1
@a2
@a3)))
:pattern ((HasTypeFuel @u0
(Prims.MkTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.Tuple3 @a1
@a2
@a3))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@a7 Type) (@a8 Type) (@a9 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.Tuple3 @a7
@a8
@a9))
(and (= @a3
@a9)
(= @a2
@a8)
(= @a1
@a7)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasTypeFuel @u0
@x4
@a1)
(HasTypeFuel @u0
@x5
@a2)
(HasTypeFuel @u0
@x6
@a3)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.Tuple3 @a7
@a8
@a9))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@a7 Type) (@a8 Type) (@a9 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.Tuple3 @a7
@a8
@a9))
(and (Valid (Precedes @x4
(Prims.MkTuple3 @a1
@a2
@a3
@x4
@x5
@x6)))
(Valid (Precedes @x5
(Prims.MkTuple3 @a1
@a2
@a3
@x4
@x5
@x6)))
(Valid (Precedes @x6
(Prims.MkTuple3 @a1
@a2
@a3
@x4
@x5
@x6)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.Tuple3 @a7
@a8
@a9))))))
; </end encoding Prims.MkTuple3>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type) (@a4 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple3 @a2
@a3
@a4))
(and (is-Prims.MkTuple3 @x1)
(= @a2
(Prims.MkTuple3__a @x1))
(= @a3
(Prims.MkTuple3__b @x1))
(= @a4
(Prims.MkTuple3__c @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple3 @a2
@a3
@a4))))))
; </end encoding >
; encoding sigelt Prims.is_MkTuple3
; <Start encoding Prims.is_MkTuple3>
(declare-fun Prims.is_MkTuple3 (Type Type Type Term) Term)
;;;;;;;;;;;;;;;;((Tuple3 'a 'b 'c) -> Tot bool)
(declare-fun Typ_fun_527 () Type)
;;;;;;;;;;;;;;;;Typ_fun_527 kinding
(assert (HasKind Typ_fun_527
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_527)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_527)))))
;;;;;;;;;;;;;;;;Typ_fun_527 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_527)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple3 @a2
@a3
@a4)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_527)))))
(declare-fun Prims.is_MkTuple3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 530
(Term_constr_id Prims.is_MkTuple3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET Prims.is_MkTuple3@tok
@a0)
@a1)
@a2)
@x3)
(Prims.is_MkTuple3 @a0
@a1
@a2
@x3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET Prims.is_MkTuple3@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkTuple3@tok
Typ_fun_527))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasType @x3
(Prims.Tuple3 @a0
@a1
@a2)))
(HasType (Prims.is_MkTuple3 @a0
@a1
@a2
@x3)
Prims.bool))
:pattern ((Prims.is_MkTuple3 @a0
@a1
@a2
@x3)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.is_MkTuple3 @a0
@a1
@a2
@x3)
(BoxBool (is-Prims.MkTuple3 @x3)))
:pattern ((Prims.is_MkTuple3 @a0
@a1
@a2
@x3)))))
; </end encoding Prims.is_MkTuple3>
; encoding sigelt Prims.MkTuple3.'a
; <Start encoding Prims.MkTuple3.'a>
(declare-fun Prims.MkTuple3._a (Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple3._a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 532
(Type_constr_id Prims.MkTuple3._a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple3._a@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkTuple3._a @a0
@a1
@a2
@x3))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple3._a@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple3._a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasType @x3
(Prims.Tuple3 @a0
@a1
@a2)))
(HasKind (Prims.MkTuple3._a @a0
@a1
@a2
@x3)
Kind_type))
:pattern ((Prims.MkTuple3._a @a0
@a1
@a2
@x3)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkTuple3._a @a0
@a1
@a2
@x3)
(Prims.MkTuple3__a @x3))
:pattern ((Prims.MkTuple3._a @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkTuple3.'a>
; encoding sigelt Prims.MkTuple3.'b
; <Start encoding Prims.MkTuple3.'b>
(declare-fun Prims.MkTuple3._b (Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple3._b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 534
(Type_constr_id Prims.MkTuple3._b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple3._b@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkTuple3._b @a0
@a1
@a2
@x3))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple3._b@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple3._b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasType @x3
(Prims.Tuple3 @a0
@a1
@a2)))
(HasKind (Prims.MkTuple3._b @a0
@a1
@a2
@x3)
Kind_type))
:pattern ((Prims.MkTuple3._b @a0
@a1
@a2
@x3)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkTuple3._b @a0
@a1
@a2
@x3)
(Prims.MkTuple3__b @x3))
:pattern ((Prims.MkTuple3._b @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkTuple3.'b>
; encoding sigelt Prims.MkTuple3.'c
; <Start encoding Prims.MkTuple3.'c>
(declare-fun Prims.MkTuple3._c (Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple3._c@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 536
(Type_constr_id Prims.MkTuple3._c@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple3._c@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkTuple3._c @a0
@a1
@a2
@x3))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple3._c@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple3._c@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasType @x3
(Prims.Tuple3 @a0
@a1
@a2)))
(HasKind (Prims.MkTuple3._c @a0
@a1
@a2
@x3)
Kind_type))
:pattern ((Prims.MkTuple3._c @a0
@a1
@a2
@x3)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkTuple3._c @a0
@a1
@a2
@x3)
(Prims.MkTuple3__c @x3))
:pattern ((Prims.MkTuple3._c @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkTuple3.'c>
; encoding sigelt Prims.MkTuple3._1
; <Start encoding Prims.MkTuple3._1>
(declare-fun Prims.MkTuple3._1 (Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple3 'a 'b 'c) -> Tot 'a)
(declare-fun Typ_fun_538 () Type)
;;;;;;;;;;;;;;;;Typ_fun_538 kinding
(assert (HasKind Typ_fun_538
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_538)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_538)))))
;;;;;;;;;;;;;;;;Typ_fun_538 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_538)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple3 @a2
@a3
@a4)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
@a2))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_538)))))
(declare-fun Prims.MkTuple3._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 541
(Term_constr_id Prims.MkTuple3._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkTuple3._1@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkTuple3._1 @a0
@a1
@a2
@x3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkTuple3._1@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple3._1@tok
Typ_fun_538))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasType @x3
(Prims.Tuple3 @a0
@a1
@a2)))
(HasType (Prims.MkTuple3._1 @a0
@a1
@a2
@x3)
@a0))
:pattern ((Prims.MkTuple3._1 @a0
@a1
@a2
@x3)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkTuple3._1 @a0
@a1
@a2
@x3)
(Prims.MkTuple3__1 @x3))
:pattern ((Prims.MkTuple3._1 @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkTuple3._1>
; encoding sigelt Prims.MkTuple3._2
; <Start encoding Prims.MkTuple3._2>
(declare-fun Prims.MkTuple3._2 (Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple3 'a 'b 'c) -> Tot 'b)
(declare-fun Typ_fun_543 () Type)
;;;;;;;;;;;;;;;;Typ_fun_543 kinding
(assert (HasKind Typ_fun_543
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_543)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_543)))))
;;;;;;;;;;;;;;;;Typ_fun_543 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_543)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple3 @a2
@a3
@a4)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
@a3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_543)))))
(declare-fun Prims.MkTuple3._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 546
(Term_constr_id Prims.MkTuple3._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkTuple3._2@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkTuple3._2 @a0
@a1
@a2
@x3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkTuple3._2@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple3._2@tok
Typ_fun_543))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasType @x3
(Prims.Tuple3 @a0
@a1
@a2)))
(HasType (Prims.MkTuple3._2 @a0
@a1
@a2
@x3)
@a1))
:pattern ((Prims.MkTuple3._2 @a0
@a1
@a2
@x3)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkTuple3._2 @a0
@a1
@a2
@x3)
(Prims.MkTuple3__2 @x3))
:pattern ((Prims.MkTuple3._2 @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkTuple3._2>
; encoding sigelt Prims.MkTuple3._3
; <Start encoding Prims.MkTuple3._3>
(declare-fun Prims.MkTuple3._3 (Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple3 'a 'b 'c) -> Tot 'c)
(declare-fun Typ_fun_548 () Type)
;;;;;;;;;;;;;;;;Typ_fun_548 kinding
(assert (HasKind Typ_fun_548
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_548)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_548)))))
;;;;;;;;;;;;;;;;Typ_fun_548 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_548)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple3 @a2
@a3
@a4)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
@a4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_548)))))
(declare-fun Prims.MkTuple3._3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 551
(Term_constr_id Prims.MkTuple3._3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkTuple3._3@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkTuple3._3 @a0
@a1
@a2
@x3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkTuple3._3@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple3._3@tok
Typ_fun_548))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasType @x3
(Prims.Tuple3 @a0
@a1
@a2)))
(HasType (Prims.MkTuple3._3 @a0
@a1
@a2
@x3)
@a2))
:pattern ((Prims.MkTuple3._3 @a0
@a1
@a2
@x3)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkTuple3._3 @a0
@a1
@a2
@x3)
(Prims.MkTuple3__3 @x3))
:pattern ((Prims.MkTuple3._3 @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkTuple3._3>
; encoding sigelt Prims.Tuple4, Prims.MkTuple4
; <Start encoding >
; <Start encoding Prims.Tuple4>
; <start constructor Prims.Tuple4>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Tuple4 (Type Type Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(= 563
(Type_constr_id (Prims.Tuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple4@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (Prims.Tuple4@a0 (Prims.Tuple4 @a0
@a1
@a2
@a3))
@a0)
:pattern ((Prims.Tuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple4@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (Prims.Tuple4@a1 (Prims.Tuple4 @a0
@a1
@a2
@a3))
@a1)
:pattern ((Prims.Tuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple4@a2 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (Prims.Tuple4@a2 (Prims.Tuple4 @a0
@a1
@a2
@a3))
@a2)
:pattern ((Prims.Tuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple4@a3 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (Prims.Tuple4@a3 (Prims.Tuple4 @a0
@a1
@a2
@a3))
@a3)
:pattern ((Prims.Tuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Tuple4 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
563)
(= @a0
(Prims.Tuple4 (Prims.Tuple4@a0 @a0)
(Prims.Tuple4@a1 @a0)
(Prims.Tuple4@a2 @a0)
(Prims.Tuple4@a3 @a0)))))
; </end constructor Prims.Tuple4>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Tuple4@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 564
(Type_constr_id Prims.Tuple4@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple4@tok
@a0)
@a1)
@a2)
@a3)
(Prims.Tuple4 @a0
@a1
@a2
@a3))
:pattern ((ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple4@tok
@a0)
@a1)
@a2)
@a3)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Tuple4@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type))
(HasKind (Prims.Tuple4 @a0
@a1
@a2
@a3)
Kind_type))
:pattern ((Prims.Tuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.Tuple4 @a2
@a3
@a4
@a5))
(= (Prims.Tuple4 @a2
@a3
@a4
@a5)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.Tuple4 @a2
@a3
@a4
@a5))))))
; </end encoding Prims.Tuple4>
; <Start encoding Prims.MkTuple4>
; <start constructor Prims.MkTuple4>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkTuple4 (Type Type Type Type Term Term Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(= 570
(Term_constr_id (Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple4__a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkTuple4__a (Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@a0)
:pattern ((Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple4__b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkTuple4__b (Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@a1)
:pattern ((Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple4__c (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkTuple4__c (Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@a2)
:pattern ((Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple4__d (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkTuple4__d (Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@a3)
:pattern ((Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple4__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkTuple4__1 (Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@x4)
:pattern ((Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple4__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkTuple4__2 (Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@x5)
:pattern ((Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple4__3 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkTuple4__3 (Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@x6)
:pattern ((Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple4__4 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkTuple4__4 (Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@x7)
:pattern ((Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkTuple4 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
570)
(= @x0
(Prims.MkTuple4 (Prims.MkTuple4__a @x0)
(Prims.MkTuple4__b @x0)
(Prims.MkTuple4__c @x0)
(Prims.MkTuple4__d @x0)
(Prims.MkTuple4__1 @x0)
(Prims.MkTuple4__2 @x0)
(Prims.MkTuple4__3 @x0)
(Prims.MkTuple4__4 @x0)))))
; </end constructor Prims.MkTuple4>
;;;;;;;;;;;;;;;;(_1:'a -> _2:'b -> _3:'c -> _4:'d -> Tot (Tuple4 'a 'b 'c 'd))
(declare-fun Typ_fun_572 () Type)
;;;;;;;;;;;;;;;;Typ_fun_572 kinding
(assert (HasKind Typ_fun_572
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_572)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_572)))))
;;;;;;;;;;;;;;;;Typ_fun_572 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_572)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
@a2)
(HasType @x7
@a3)
(HasType @x8
@a4)
(HasType @x9
@a5))
(HasType (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
@x7)
@x8)
@x9)
(Prims.Tuple4 @a2
@a3
@a4
@a5)))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
@x7)
@x8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_572)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkTuple4
(declare-fun Prims.MkTuple4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 575
(Term_constr_id Prims.MkTuple4@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkTuple4@tok
Typ_fun_572))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)
@x6)
@x7)
(Prims.MkTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)
@x6)
@x7)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasTypeFuel (SFuel @u0)
@x5
@a1)
(HasTypeFuel (SFuel @u0)
@x6
@a2)
(HasTypeFuel (SFuel @u0)
@x7
@a3)
(HasTypeFuel (SFuel @u0)
@x8
@a4))
(HasTypeFuel @u0
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.Tuple4 @a1
@a2
@a3
@a4)))
:pattern ((HasTypeFuel @u0
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.Tuple4 @a1
@a2
@a3
@a4))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@a9 Type) (@a10 Type) (@a11 Type) (@a12 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.Tuple4 @a9
@a10
@a11
@a12))
(and (= @a4
@a12)
(= @a3
@a11)
(= @a2
@a10)
(= @a1
@a9)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasTypeFuel @u0
@x5
@a1)
(HasTypeFuel @u0
@x6
@a2)
(HasTypeFuel @u0
@x7
@a3)
(HasTypeFuel @u0
@x8
@a4)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.Tuple4 @a9
@a10
@a11
@a12))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@a9 Type) (@a10 Type) (@a11 Type) (@a12 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.Tuple4 @a9
@a10
@a11
@a12))
(and (Valid (Precedes @x5
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)))
(Valid (Precedes @x6
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)))
(Valid (Precedes @x7
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)))
(Valid (Precedes @x8
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.Tuple4 @a9
@a10
@a11
@a12))))))
; </end encoding Prims.MkTuple4>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple4 @a2
@a3
@a4
@a5))
(and (is-Prims.MkTuple4 @x1)
(= @a2
(Prims.MkTuple4__a @x1))
(= @a3
(Prims.MkTuple4__b @x1))
(= @a4
(Prims.MkTuple4__c @x1))
(= @a5
(Prims.MkTuple4__d @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple4 @a2
@a3
@a4
@a5))))))
; </end encoding >
; encoding sigelt Prims.is_MkTuple4
; <Start encoding Prims.is_MkTuple4>
(declare-fun Prims.is_MkTuple4 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;((Tuple4 'a 'b 'c 'd) -> Tot bool)
(declare-fun Typ_fun_577 () Type)
;;;;;;;;;;;;;;;;Typ_fun_577 kinding
(assert (HasKind Typ_fun_577
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_577)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_577)))))
;;;;;;;;;;;;;;;;Typ_fun_577 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_577)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_577)))))
(declare-fun Prims.is_MkTuple4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 580
(Term_constr_id Prims.is_MkTuple4@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple4@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.is_MkTuple4 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple4@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkTuple4@tok
Typ_fun_577))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.is_MkTuple4 @a0
@a1
@a2
@a3
@x4)
Prims.bool))
:pattern ((Prims.is_MkTuple4 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.is_MkTuple4 @a0
@a1
@a2
@a3
@x4)
(BoxBool (is-Prims.MkTuple4 @x4)))
:pattern ((Prims.is_MkTuple4 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.is_MkTuple4>
; encoding sigelt Prims.MkTuple4.'a
; <Start encoding Prims.MkTuple4.'a>
(declare-fun Prims.MkTuple4._a (Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple4._a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 582
(Type_constr_id Prims.MkTuple4._a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple4._a@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkTuple4._a @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple4._a@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple4._a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple4 @a0
@a1
@a2
@a3)))
(HasKind (Prims.MkTuple4._a @a0
@a1
@a2
@a3
@x4)
Kind_type))
:pattern ((Prims.MkTuple4._a @a0
@a1
@a2
@a3
@x4)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkTuple4._a @a0
@a1
@a2
@a3
@x4)
(Prims.MkTuple4__a @x4))
:pattern ((Prims.MkTuple4._a @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkTuple4.'a>
; encoding sigelt Prims.MkTuple4.'b
; <Start encoding Prims.MkTuple4.'b>
(declare-fun Prims.MkTuple4._b (Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple4._b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 584
(Type_constr_id Prims.MkTuple4._b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple4._b@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkTuple4._b @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple4._b@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple4._b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple4 @a0
@a1
@a2
@a3)))
(HasKind (Prims.MkTuple4._b @a0
@a1
@a2
@a3
@x4)
Kind_type))
:pattern ((Prims.MkTuple4._b @a0
@a1
@a2
@a3
@x4)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkTuple4._b @a0
@a1
@a2
@a3
@x4)
(Prims.MkTuple4__b @x4))
:pattern ((Prims.MkTuple4._b @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkTuple4.'b>
; encoding sigelt Prims.MkTuple4.'c
; <Start encoding Prims.MkTuple4.'c>
(declare-fun Prims.MkTuple4._c (Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple4._c@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 586
(Type_constr_id Prims.MkTuple4._c@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple4._c@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkTuple4._c @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple4._c@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple4._c@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple4 @a0
@a1
@a2
@a3)))
(HasKind (Prims.MkTuple4._c @a0
@a1
@a2
@a3
@x4)
Kind_type))
:pattern ((Prims.MkTuple4._c @a0
@a1
@a2
@a3
@x4)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkTuple4._c @a0
@a1
@a2
@a3
@x4)
(Prims.MkTuple4__c @x4))
:pattern ((Prims.MkTuple4._c @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkTuple4.'c>
; encoding sigelt Prims.MkTuple4.'d
; <Start encoding Prims.MkTuple4.'d>
(declare-fun Prims.MkTuple4._d (Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple4._d@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 588
(Type_constr_id Prims.MkTuple4._d@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple4._d@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkTuple4._d @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple4._d@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple4._d@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple4 @a0
@a1
@a2
@a3)))
(HasKind (Prims.MkTuple4._d @a0
@a1
@a2
@a3
@x4)
Kind_type))
:pattern ((Prims.MkTuple4._d @a0
@a1
@a2
@a3
@x4)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkTuple4._d @a0
@a1
@a2
@a3
@x4)
(Prims.MkTuple4__d @x4))
:pattern ((Prims.MkTuple4._d @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkTuple4.'d>
; encoding sigelt Prims.MkTuple4._1
; <Start encoding Prims.MkTuple4._1>
(declare-fun Prims.MkTuple4._1 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple4 'a 'b 'c 'd) -> Tot 'a)
(declare-fun Typ_fun_590 () Type)
;;;;;;;;;;;;;;;;Typ_fun_590 kinding
(assert (HasKind Typ_fun_590
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_590)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_590)))))
;;;;;;;;;;;;;;;;Typ_fun_590 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_590)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
@a2))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_590)))))
(declare-fun Prims.MkTuple4._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 593
(Term_constr_id Prims.MkTuple4._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4._1@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkTuple4._1 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4._1@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple4._1@tok
Typ_fun_590))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.MkTuple4._1 @a0
@a1
@a2
@a3
@x4)
@a0))
:pattern ((Prims.MkTuple4._1 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkTuple4._1 @a0
@a1
@a2
@a3
@x4)
(Prims.MkTuple4__1 @x4))
:pattern ((Prims.MkTuple4._1 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkTuple4._1>
; encoding sigelt Prims.MkTuple4._2
; <Start encoding Prims.MkTuple4._2>
(declare-fun Prims.MkTuple4._2 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple4 'a 'b 'c 'd) -> Tot 'b)
(declare-fun Typ_fun_595 () Type)
;;;;;;;;;;;;;;;;Typ_fun_595 kinding
(assert (HasKind Typ_fun_595
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_595)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_595)))))
;;;;;;;;;;;;;;;;Typ_fun_595 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_595)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
@a3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_595)))))
(declare-fun Prims.MkTuple4._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 598
(Term_constr_id Prims.MkTuple4._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4._2@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkTuple4._2 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4._2@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple4._2@tok
Typ_fun_595))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.MkTuple4._2 @a0
@a1
@a2
@a3
@x4)
@a1))
:pattern ((Prims.MkTuple4._2 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkTuple4._2 @a0
@a1
@a2
@a3
@x4)
(Prims.MkTuple4__2 @x4))
:pattern ((Prims.MkTuple4._2 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkTuple4._2>
; encoding sigelt Prims.MkTuple4._3
; <Start encoding Prims.MkTuple4._3>
(declare-fun Prims.MkTuple4._3 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple4 'a 'b 'c 'd) -> Tot 'c)
(declare-fun Typ_fun_600 () Type)
;;;;;;;;;;;;;;;;Typ_fun_600 kinding
(assert (HasKind Typ_fun_600
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_600)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_600)))))
;;;;;;;;;;;;;;;;Typ_fun_600 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_600)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
@a4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_600)))))
(declare-fun Prims.MkTuple4._3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 603
(Term_constr_id Prims.MkTuple4._3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4._3@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkTuple4._3 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4._3@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple4._3@tok
Typ_fun_600))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.MkTuple4._3 @a0
@a1
@a2
@a3
@x4)
@a2))
:pattern ((Prims.MkTuple4._3 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkTuple4._3 @a0
@a1
@a2
@a3
@x4)
(Prims.MkTuple4__3 @x4))
:pattern ((Prims.MkTuple4._3 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkTuple4._3>
; encoding sigelt Prims.MkTuple4._4
; <Start encoding Prims.MkTuple4._4>
(declare-fun Prims.MkTuple4._4 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple4 'a 'b 'c 'd) -> Tot 'd)
(declare-fun Typ_fun_605 () Type)
;;;;;;;;;;;;;;;;Typ_fun_605 kinding
(assert (HasKind Typ_fun_605
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_605)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_605)))))
;;;;;;;;;;;;;;;;Typ_fun_605 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_605)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
@a5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_605)))))
(declare-fun Prims.MkTuple4._4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 608
(Term_constr_id Prims.MkTuple4._4@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4._4@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkTuple4._4 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple4._4@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple4._4@tok
Typ_fun_605))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasType @x4
(Prims.Tuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.MkTuple4._4 @a0
@a1
@a2
@a3
@x4)
@a3))
:pattern ((Prims.MkTuple4._4 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkTuple4._4 @a0
@a1
@a2
@a3
@x4)
(Prims.MkTuple4__4 @x4))
:pattern ((Prims.MkTuple4._4 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkTuple4._4>
; encoding sigelt Prims.Tuple5, Prims.MkTuple5
; <Start encoding >
; <Start encoding Prims.Tuple5>
; <start constructor Prims.Tuple5>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Tuple5 (Type Type Type Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type))
(= 620
(Type_constr_id (Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple5@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type))
(! (= (Prims.Tuple5@a0 (Prims.Tuple5 @a0
@a1
@a2
@a3
@a4))
@a0)
:pattern ((Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple5@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type))
(! (= (Prims.Tuple5@a1 (Prims.Tuple5 @a0
@a1
@a2
@a3
@a4))
@a1)
:pattern ((Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple5@a2 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type))
(! (= (Prims.Tuple5@a2 (Prims.Tuple5 @a0
@a1
@a2
@a3
@a4))
@a2)
:pattern ((Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple5@a3 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type))
(! (= (Prims.Tuple5@a3 (Prims.Tuple5 @a0
@a1
@a2
@a3
@a4))
@a3)
:pattern ((Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple5@a4 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type))
(! (= (Prims.Tuple5@a4 (Prims.Tuple5 @a0
@a1
@a2
@a3
@a4))
@a4)
:pattern ((Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Tuple5 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
620)
(= @a0
(Prims.Tuple5 (Prims.Tuple5@a0 @a0)
(Prims.Tuple5@a1 @a0)
(Prims.Tuple5@a2 @a0)
(Prims.Tuple5@a3 @a0)
(Prims.Tuple5@a4 @a0)))))
; </end constructor Prims.Tuple5>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Tuple5@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 621
(Type_constr_id Prims.Tuple5@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type))
(! (= (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4))
:pattern ((ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple5@tok
@a0)
@a1)
@a2)
@a3)
@a4)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Tuple5@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type))
(HasKind (Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)
Kind_type))
:pattern ((Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6))
(= (Prims.Tuple5 @a2
@a3
@a4
@a5
@a6)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6))))))
; </end encoding Prims.Tuple5>
; <Start encoding Prims.MkTuple5>
; <start constructor Prims.MkTuple5>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkTuple5 (Type Type Type Type Type Term Term Term Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(= 627
(Term_constr_id (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__a (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@a0)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__b (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@a1)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__c (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__c (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@a2)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__d (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__d (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@a3)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__e (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__e (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@a4)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__1 (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@x5)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__2 (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@x6)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__3 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__3 (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@x7)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__4 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__4 (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@x8)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple5__5 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (Prims.MkTuple5__5 (Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
@x9)
:pattern ((Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkTuple5 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
627)
(= @x0
(Prims.MkTuple5 (Prims.MkTuple5__a @x0)
(Prims.MkTuple5__b @x0)
(Prims.MkTuple5__c @x0)
(Prims.MkTuple5__d @x0)
(Prims.MkTuple5__e @x0)
(Prims.MkTuple5__1 @x0)
(Prims.MkTuple5__2 @x0)
(Prims.MkTuple5__3 @x0)
(Prims.MkTuple5__4 @x0)
(Prims.MkTuple5__5 @x0)))))
; </end constructor Prims.MkTuple5>
;;;;;;;;;;;;;;;;(_1:'a -> _2:'b -> _3:'c -> _4:'d -> _5:'e -> Tot (Tuple5 'a 'b 'c 'd 'e))
(declare-fun Typ_fun_629 () Type)
;;;;;;;;;;;;;;;;Typ_fun_629 kinding
(assert (HasKind Typ_fun_629
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_629)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_629)))))
;;;;;;;;;;;;;;;;Typ_fun_629 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_629)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
@a2)
(HasType @x8
@a3)
(HasType @x9
@a4)
(HasType @x10
@a5)
(HasType @x11
@a6))
(HasType (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
@x8)
@x9)
@x10)
@x11)
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6)))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
@x8)
@x9)
@x10)
@x11)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_629)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkTuple5
(declare-fun Prims.MkTuple5@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 632
(Term_constr_id Prims.MkTuple5@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkTuple5@tok
Typ_fun_629))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (= (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
@x6)
@x7)
@x8)
@x9)
(Prims.MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8
@x9))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
@x6)
@x7)
@x8)
@x9)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasTypeFuel (SFuel @u0)
@x6
@a1)
(HasTypeFuel (SFuel @u0)
@x7
@a2)
(HasTypeFuel (SFuel @u0)
@x8
@a3)
(HasTypeFuel (SFuel @u0)
@x9
@a4)
(HasTypeFuel (SFuel @u0)
@x10
@a5))
(HasTypeFuel @u0
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)
(Prims.Tuple5 @a1
@a2
@a3
@a4
@a5)))
:pattern ((HasTypeFuel @u0
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)
(Prims.Tuple5 @a1
@a2
@a3
@a4
@a5))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@a11 Type) (@a12 Type) (@a13 Type) (@a14 Type) (@a15 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)
(Prims.Tuple5 @a11
@a12
@a13
@a14
@a15))
(and (= @a5
@a15)
(= @a4
@a14)
(= @a3
@a13)
(= @a2
@a12)
(= @a1
@a11)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasTypeFuel @u0
@x6
@a1)
(HasTypeFuel @u0
@x7
@a2)
(HasTypeFuel @u0
@x8
@a3)
(HasTypeFuel @u0
@x9
@a4)
(HasTypeFuel @u0
@x10
@a5)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)
(Prims.Tuple5 @a11
@a12
@a13
@a14
@a15))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@a11 Type) (@a12 Type) (@a13 Type) (@a14 Type) (@a15 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)
(Prims.Tuple5 @a11
@a12
@a13
@a14
@a15))
(and (Valid (Precedes @x6
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)))
(Valid (Precedes @x7
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)))
(Valid (Precedes @x8
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)))
(Valid (Precedes @x9
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)))
(Valid (Precedes @x10
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple5 @a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10)
(Prims.Tuple5 @a11
@a12
@a13
@a14
@a15))))))
; </end encoding Prims.MkTuple5>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6))
(and (is-Prims.MkTuple5 @x1)
(= @a2
(Prims.MkTuple5__a @x1))
(= @a3
(Prims.MkTuple5__b @x1))
(= @a4
(Prims.MkTuple5__c @x1))
(= @a5
(Prims.MkTuple5__d @x1))
(= @a6
(Prims.MkTuple5__e @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6))))))
; </end encoding >
; encoding sigelt Prims.is_MkTuple5
; <Start encoding Prims.is_MkTuple5>
(declare-fun Prims.is_MkTuple5 (Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;((Tuple5 'a 'b 'c 'd 'e) -> Tot bool)
(declare-fun Typ_fun_634 () Type)
;;;;;;;;;;;;;;;;Typ_fun_634 kinding
(assert (HasKind Typ_fun_634
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_634)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_634)))))
;;;;;;;;;;;;;;;;Typ_fun_634 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_634)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_634)))))
(declare-fun Prims.is_MkTuple5@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 637
(Term_constr_id Prims.is_MkTuple5@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.is_MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkTuple5@tok
Typ_fun_634))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasType (Prims.is_MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5)
Prims.bool))
:pattern ((Prims.is_MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.is_MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5)
(BoxBool (is-Prims.MkTuple5 @x5)))
:pattern ((Prims.is_MkTuple5 @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.is_MkTuple5>
; encoding sigelt Prims.MkTuple5.'a
; <Start encoding Prims.MkTuple5.'a>
(declare-fun Prims.MkTuple5._a (Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple5._a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 639
(Type_constr_id Prims.MkTuple5._a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._a@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._a @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._a@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple5._a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasKind (Prims.MkTuple5._a @a0
@a1
@a2
@a3
@a4
@x5)
Kind_type))
:pattern ((Prims.MkTuple5._a @a0
@a1
@a2
@a3
@a4
@x5)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._a @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__a @x5))
:pattern ((Prims.MkTuple5._a @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5.'a>
; encoding sigelt Prims.MkTuple5.'b
; <Start encoding Prims.MkTuple5.'b>
(declare-fun Prims.MkTuple5._b (Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple5._b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 641
(Type_constr_id Prims.MkTuple5._b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._b@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._b @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._b@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple5._b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasKind (Prims.MkTuple5._b @a0
@a1
@a2
@a3
@a4
@x5)
Kind_type))
:pattern ((Prims.MkTuple5._b @a0
@a1
@a2
@a3
@a4
@x5)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._b @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__b @x5))
:pattern ((Prims.MkTuple5._b @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5.'b>
; encoding sigelt Prims.MkTuple5.'c
; <Start encoding Prims.MkTuple5.'c>
(declare-fun Prims.MkTuple5._c (Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple5._c@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 643
(Type_constr_id Prims.MkTuple5._c@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._c@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._c @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._c@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple5._c@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasKind (Prims.MkTuple5._c @a0
@a1
@a2
@a3
@a4
@x5)
Kind_type))
:pattern ((Prims.MkTuple5._c @a0
@a1
@a2
@a3
@a4
@x5)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._c @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__c @x5))
:pattern ((Prims.MkTuple5._c @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5.'c>
; encoding sigelt Prims.MkTuple5.'d
; <Start encoding Prims.MkTuple5.'d>
(declare-fun Prims.MkTuple5._d (Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple5._d@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 645
(Type_constr_id Prims.MkTuple5._d@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._d@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._d @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._d@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple5._d@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasKind (Prims.MkTuple5._d @a0
@a1
@a2
@a3
@a4
@x5)
Kind_type))
:pattern ((Prims.MkTuple5._d @a0
@a1
@a2
@a3
@a4
@x5)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._d @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__d @x5))
:pattern ((Prims.MkTuple5._d @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5.'d>
; encoding sigelt Prims.MkTuple5.'e
; <Start encoding Prims.MkTuple5.'e>
(declare-fun Prims.MkTuple5._e (Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple5._e@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 647
(Type_constr_id Prims.MkTuple5._e@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._e@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._e @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple5._e@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple5._e@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasKind (Prims.MkTuple5._e @a0
@a1
@a2
@a3
@a4
@x5)
Kind_type))
:pattern ((Prims.MkTuple5._e @a0
@a1
@a2
@a3
@a4
@x5)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._e @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__e @x5))
:pattern ((Prims.MkTuple5._e @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5.'e>
; encoding sigelt Prims.MkTuple5._1
; <Start encoding Prims.MkTuple5._1>
(declare-fun Prims.MkTuple5._1 (Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple5 'a 'b 'c 'd 'e) -> Tot 'a)
(declare-fun Typ_fun_649 () Type)
;;;;;;;;;;;;;;;;Typ_fun_649 kinding
(assert (HasKind Typ_fun_649
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_649)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_649)))))
;;;;;;;;;;;;;;;;Typ_fun_649 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_649)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
@a2))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_649)))))
(declare-fun Prims.MkTuple5._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 652
(Term_constr_id Prims.MkTuple5._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._1@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._1 @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._1@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple5._1@tok
Typ_fun_649))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasType (Prims.MkTuple5._1 @a0
@a1
@a2
@a3
@a4
@x5)
@a0))
:pattern ((Prims.MkTuple5._1 @a0
@a1
@a2
@a3
@a4
@x5)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._1 @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__1 @x5))
:pattern ((Prims.MkTuple5._1 @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5._1>
; encoding sigelt Prims.MkTuple5._2
; <Start encoding Prims.MkTuple5._2>
(declare-fun Prims.MkTuple5._2 (Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple5 'a 'b 'c 'd 'e) -> Tot 'b)
(declare-fun Typ_fun_654 () Type)
;;;;;;;;;;;;;;;;Typ_fun_654 kinding
(assert (HasKind Typ_fun_654
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_654)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_654)))))
;;;;;;;;;;;;;;;;Typ_fun_654 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_654)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
@a3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_654)))))
(declare-fun Prims.MkTuple5._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 657
(Term_constr_id Prims.MkTuple5._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._2@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._2 @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._2@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple5._2@tok
Typ_fun_654))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasType (Prims.MkTuple5._2 @a0
@a1
@a2
@a3
@a4
@x5)
@a1))
:pattern ((Prims.MkTuple5._2 @a0
@a1
@a2
@a3
@a4
@x5)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._2 @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__2 @x5))
:pattern ((Prims.MkTuple5._2 @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5._2>
; encoding sigelt Prims.MkTuple5._3
; <Start encoding Prims.MkTuple5._3>
(declare-fun Prims.MkTuple5._3 (Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple5 'a 'b 'c 'd 'e) -> Tot 'c)
(declare-fun Typ_fun_659 () Type)
;;;;;;;;;;;;;;;;Typ_fun_659 kinding
(assert (HasKind Typ_fun_659
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_659)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_659)))))
;;;;;;;;;;;;;;;;Typ_fun_659 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_659)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
@a4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_659)))))
(declare-fun Prims.MkTuple5._3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 662
(Term_constr_id Prims.MkTuple5._3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._3@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._3 @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._3@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple5._3@tok
Typ_fun_659))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasType (Prims.MkTuple5._3 @a0
@a1
@a2
@a3
@a4
@x5)
@a2))
:pattern ((Prims.MkTuple5._3 @a0
@a1
@a2
@a3
@a4
@x5)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._3 @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__3 @x5))
:pattern ((Prims.MkTuple5._3 @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5._3>
; encoding sigelt Prims.MkTuple5._4
; <Start encoding Prims.MkTuple5._4>
(declare-fun Prims.MkTuple5._4 (Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple5 'a 'b 'c 'd 'e) -> Tot 'd)
(declare-fun Typ_fun_664 () Type)
;;;;;;;;;;;;;;;;Typ_fun_664 kinding
(assert (HasKind Typ_fun_664
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_664)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_664)))))
;;;;;;;;;;;;;;;;Typ_fun_664 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_664)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
@a5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_664)))))
(declare-fun Prims.MkTuple5._4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 667
(Term_constr_id Prims.MkTuple5._4@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._4@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._4 @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._4@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple5._4@tok
Typ_fun_664))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasType (Prims.MkTuple5._4 @a0
@a1
@a2
@a3
@a4
@x5)
@a3))
:pattern ((Prims.MkTuple5._4 @a0
@a1
@a2
@a3
@a4
@x5)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._4 @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__4 @x5))
:pattern ((Prims.MkTuple5._4 @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5._4>
; encoding sigelt Prims.MkTuple5._5
; <Start encoding Prims.MkTuple5._5>
(declare-fun Prims.MkTuple5._5 (Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple5 'a 'b 'c 'd 'e) -> Tot 'e)
(declare-fun Typ_fun_669 () Type)
;;;;;;;;;;;;;;;;Typ_fun_669 kinding
(assert (HasKind Typ_fun_669
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_669)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_669)))))
;;;;;;;;;;;;;;;;Typ_fun_669 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_669)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple5 @a2
@a3
@a4
@a5
@a6)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
@a6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_669)))))
(declare-fun Prims.MkTuple5._5@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 672
(Term_constr_id Prims.MkTuple5._5@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)
(Prims.MkTuple5._5 @a0
@a1
@a2
@a3
@a4
@x5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple5._5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@x5)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple5._5@tok
Typ_fun_669))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasType @x5
(Prims.Tuple5 @a0
@a1
@a2
@a3
@a4)))
(HasType (Prims.MkTuple5._5 @a0
@a1
@a2
@a3
@a4
@x5)
@a4))
:pattern ((Prims.MkTuple5._5 @a0
@a1
@a2
@a3
@a4
@x5)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (= (Prims.MkTuple5._5 @a0
@a1
@a2
@a3
@a4
@x5)
(Prims.MkTuple5__5 @x5))
:pattern ((Prims.MkTuple5._5 @a0
@a1
@a2
@a3
@a4
@x5)))))
; </end encoding Prims.MkTuple5._5>
; encoding sigelt Prims.Tuple6, Prims.MkTuple6
; <Start encoding >
; <Start encoding Prims.Tuple6>
; <start constructor Prims.Tuple6>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Tuple6 (Type Type Type Type Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(= 684
(Type_constr_id (Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple6@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (= (Prims.Tuple6@a0 (Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5))
@a0)
:pattern ((Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple6@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (= (Prims.Tuple6@a1 (Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5))
@a1)
:pattern ((Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple6@a2 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (= (Prims.Tuple6@a2 (Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5))
@a2)
:pattern ((Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple6@a3 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (= (Prims.Tuple6@a3 (Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5))
@a3)
:pattern ((Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple6@a4 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (= (Prims.Tuple6@a4 (Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5))
@a4)
:pattern ((Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple6@a5 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (= (Prims.Tuple6@a5 (Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5))
@a5)
:pattern ((Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Tuple6 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
684)
(= @a0
(Prims.Tuple6 (Prims.Tuple6@a0 @a0)
(Prims.Tuple6@a1 @a0)
(Prims.Tuple6@a2 @a0)
(Prims.Tuple6@a3 @a0)
(Prims.Tuple6@a4 @a0)
(Prims.Tuple6@a5 @a0)))))
; </end constructor Prims.Tuple6>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Tuple6@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 685
(Type_constr_id Prims.Tuple6@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (= (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5))
:pattern ((ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Tuple6@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type))
(HasKind (Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)
Kind_type))
:pattern ((Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7))
(= (Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7))))))
; </end encoding Prims.Tuple6>
; <Start encoding Prims.MkTuple6>
; <start constructor Prims.MkTuple6>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkTuple6 (Type Type Type Type Type Type Term Term Term Term Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(= 691
(Term_constr_id (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__a (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@a0)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__b (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@a1)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__c (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__c (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@a2)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__d (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__d (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@a3)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__e (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__e (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@a4)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__f (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__f (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@a5)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__1 (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@x6)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__2 (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@x7)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__3 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__3 (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@x8)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__4 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__4 (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@x9)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__5 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__5 (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@x10)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple6__6 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (Prims.MkTuple6__6 (Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
@x11)
:pattern ((Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkTuple6 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
691)
(= @x0
(Prims.MkTuple6 (Prims.MkTuple6__a @x0)
(Prims.MkTuple6__b @x0)
(Prims.MkTuple6__c @x0)
(Prims.MkTuple6__d @x0)
(Prims.MkTuple6__e @x0)
(Prims.MkTuple6__f @x0)
(Prims.MkTuple6__1 @x0)
(Prims.MkTuple6__2 @x0)
(Prims.MkTuple6__3 @x0)
(Prims.MkTuple6__4 @x0)
(Prims.MkTuple6__5 @x0)
(Prims.MkTuple6__6 @x0)))))
; </end constructor Prims.MkTuple6>
;;;;;;;;;;;;;;;;(_1:'a -> _2:'b -> _3:'c -> _4:'d -> _5:'e -> _6:'f -> Tot (Tuple6 'a 'b 'c 'd 'e 'f))
(declare-fun Typ_fun_693 () Type)
;;;;;;;;;;;;;;;;Typ_fun_693 kinding
(assert (HasKind Typ_fun_693
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_693)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_693)))))
;;;;;;;;;;;;;;;;Typ_fun_693 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_693)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
@a2)
(HasType @x9
@a3)
(HasType @x10
@a4)
(HasType @x11
@a5)
(HasType @x12
@a6)
(HasType @x13
@a7))
(HasType (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@x9)
@x10)
@x11)
@x12)
@x13)
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7)))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@x9)
@x10)
@x11)
@x12)
@x13)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_693)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkTuple6
(declare-fun Prims.MkTuple6@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 696
(Term_constr_id Prims.MkTuple6@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkTuple6@tok
Typ_fun_693))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term))
(! (= (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
@x7)
@x8)
@x9)
@x10)
@x11)
(Prims.MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6
@x7
@x8
@x9
@x10
@x11))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
@x7)
@x8)
@x9)
@x10)
@x11)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasTypeFuel (SFuel @u0)
@x7
@a1)
(HasTypeFuel (SFuel @u0)
@x8
@a2)
(HasTypeFuel (SFuel @u0)
@x9
@a3)
(HasTypeFuel (SFuel @u0)
@x10
@a4)
(HasTypeFuel (SFuel @u0)
@x11
@a5)
(HasTypeFuel (SFuel @u0)
@x12
@a6))
(HasTypeFuel @u0
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)
(Prims.Tuple6 @a1
@a2
@a3
@a4
@a5
@a6)))
:pattern ((HasTypeFuel @u0
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)
(Prims.Tuple6 @a1
@a2
@a3
@a4
@a5
@a6))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@a13 Type) (@a14 Type) (@a15 Type) (@a16 Type) (@a17 Type) (@a18 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)
(Prims.Tuple6 @a13
@a14
@a15
@a16
@a17
@a18))
(and (= @a6
@a18)
(= @a5
@a17)
(= @a4
@a16)
(= @a3
@a15)
(= @a2
@a14)
(= @a1
@a13)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasTypeFuel @u0
@x7
@a1)
(HasTypeFuel @u0
@x8
@a2)
(HasTypeFuel @u0
@x9
@a3)
(HasTypeFuel @u0
@x10
@a4)
(HasTypeFuel @u0
@x11
@a5)
(HasTypeFuel @u0
@x12
@a6)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)
(Prims.Tuple6 @a13
@a14
@a15
@a16
@a17
@a18))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@a13 Type) (@a14 Type) (@a15 Type) (@a16 Type) (@a17 Type) (@a18 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)
(Prims.Tuple6 @a13
@a14
@a15
@a16
@a17
@a18))
(and (Valid (Precedes @x7
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)))
(Valid (Precedes @x8
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)))
(Valid (Precedes @x9
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)))
(Valid (Precedes @x10
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)))
(Valid (Precedes @x11
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)))
(Valid (Precedes @x12
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple6 @a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12)
(Prims.Tuple6 @a13
@a14
@a15
@a16
@a17
@a18))))))
; </end encoding Prims.MkTuple6>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7))
(and (is-Prims.MkTuple6 @x1)
(= @a2
(Prims.MkTuple6__a @x1))
(= @a3
(Prims.MkTuple6__b @x1))
(= @a4
(Prims.MkTuple6__c @x1))
(= @a5
(Prims.MkTuple6__d @x1))
(= @a6
(Prims.MkTuple6__e @x1))
(= @a7
(Prims.MkTuple6__f @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7))))))
; </end encoding >
; encoding sigelt Prims.is_MkTuple6
; <Start encoding Prims.is_MkTuple6>
(declare-fun Prims.is_MkTuple6 (Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;((Tuple6 'a 'b 'c 'd 'e 'f) -> Tot bool)
(declare-fun Typ_fun_698 () Type)
;;;;;;;;;;;;;;;;Typ_fun_698 kinding
(assert (HasKind Typ_fun_698
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_698)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_698)))))
;;;;;;;;;;;;;;;;Typ_fun_698 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_698)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_698)))))
(declare-fun Prims.is_MkTuple6@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 701
(Term_constr_id Prims.is_MkTuple6@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.is_MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkTuple6@tok
Typ_fun_698))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasType (Prims.is_MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
Prims.bool))
:pattern ((Prims.is_MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.is_MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(BoxBool (is-Prims.MkTuple6 @x6)))
:pattern ((Prims.is_MkTuple6 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.is_MkTuple6>
; encoding sigelt Prims.MkTuple6.'a
; <Start encoding Prims.MkTuple6.'a>
(declare-fun Prims.MkTuple6._a (Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple6._a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 703
(Type_constr_id Prims.MkTuple6._a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._a@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._a @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._a@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple6._a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasKind (Prims.MkTuple6._a @a0
@a1
@a2
@a3
@a4
@a5
@x6)
Kind_type))
:pattern ((Prims.MkTuple6._a @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._a @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__a @x6))
:pattern ((Prims.MkTuple6._a @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6.'a>
; encoding sigelt Prims.MkTuple6.'b
; <Start encoding Prims.MkTuple6.'b>
(declare-fun Prims.MkTuple6._b (Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple6._b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 705
(Type_constr_id Prims.MkTuple6._b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._b@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._b @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._b@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple6._b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasKind (Prims.MkTuple6._b @a0
@a1
@a2
@a3
@a4
@a5
@x6)
Kind_type))
:pattern ((Prims.MkTuple6._b @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._b @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__b @x6))
:pattern ((Prims.MkTuple6._b @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6.'b>
; encoding sigelt Prims.MkTuple6.'c
; <Start encoding Prims.MkTuple6.'c>
(declare-fun Prims.MkTuple6._c (Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple6._c@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 707
(Type_constr_id Prims.MkTuple6._c@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._c@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._c @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._c@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple6._c@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasKind (Prims.MkTuple6._c @a0
@a1
@a2
@a3
@a4
@a5
@x6)
Kind_type))
:pattern ((Prims.MkTuple6._c @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._c @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__c @x6))
:pattern ((Prims.MkTuple6._c @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6.'c>
; encoding sigelt Prims.MkTuple6.'d
; <Start encoding Prims.MkTuple6.'d>
(declare-fun Prims.MkTuple6._d (Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple6._d@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 709
(Type_constr_id Prims.MkTuple6._d@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._d@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._d @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._d@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple6._d@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasKind (Prims.MkTuple6._d @a0
@a1
@a2
@a3
@a4
@a5
@x6)
Kind_type))
:pattern ((Prims.MkTuple6._d @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._d @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__d @x6))
:pattern ((Prims.MkTuple6._d @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6.'d>
; encoding sigelt Prims.MkTuple6.'e
; <Start encoding Prims.MkTuple6.'e>
(declare-fun Prims.MkTuple6._e (Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple6._e@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 711
(Type_constr_id Prims.MkTuple6._e@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._e@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._e @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._e@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple6._e@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasKind (Prims.MkTuple6._e @a0
@a1
@a2
@a3
@a4
@a5
@x6)
Kind_type))
:pattern ((Prims.MkTuple6._e @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._e @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__e @x6))
:pattern ((Prims.MkTuple6._e @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6.'e>
; encoding sigelt Prims.MkTuple6.'f
; <Start encoding Prims.MkTuple6.'f>
(declare-fun Prims.MkTuple6._f (Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple6._f@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 713
(Type_constr_id Prims.MkTuple6._f@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._f@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._f @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple6._f@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple6._f@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasKind (Prims.MkTuple6._f @a0
@a1
@a2
@a3
@a4
@a5
@x6)
Kind_type))
:pattern ((Prims.MkTuple6._f @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._f @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__f @x6))
:pattern ((Prims.MkTuple6._f @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6.'f>
; encoding sigelt Prims.MkTuple6._1
; <Start encoding Prims.MkTuple6._1>
(declare-fun Prims.MkTuple6._1 (Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple6 'a 'b 'c 'd 'e 'f) -> Tot 'a)
(declare-fun Typ_fun_715 () Type)
;;;;;;;;;;;;;;;;Typ_fun_715 kinding
(assert (HasKind Typ_fun_715
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_715)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_715)))))
;;;;;;;;;;;;;;;;Typ_fun_715 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_715)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@a2))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_715)))))
(declare-fun Prims.MkTuple6._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 718
(Term_constr_id Prims.MkTuple6._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._1@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._1 @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._1@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple6._1@tok
Typ_fun_715))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasType (Prims.MkTuple6._1 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
@a0))
:pattern ((Prims.MkTuple6._1 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._1 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__1 @x6))
:pattern ((Prims.MkTuple6._1 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6._1>
; encoding sigelt Prims.MkTuple6._2
; <Start encoding Prims.MkTuple6._2>
(declare-fun Prims.MkTuple6._2 (Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple6 'a 'b 'c 'd 'e 'f) -> Tot 'b)
(declare-fun Typ_fun_720 () Type)
;;;;;;;;;;;;;;;;Typ_fun_720 kinding
(assert (HasKind Typ_fun_720
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_720)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_720)))))
;;;;;;;;;;;;;;;;Typ_fun_720 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_720)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@a3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_720)))))
(declare-fun Prims.MkTuple6._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 723
(Term_constr_id Prims.MkTuple6._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._2@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._2 @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._2@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple6._2@tok
Typ_fun_720))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasType (Prims.MkTuple6._2 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
@a1))
:pattern ((Prims.MkTuple6._2 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._2 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__2 @x6))
:pattern ((Prims.MkTuple6._2 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6._2>
; encoding sigelt Prims.MkTuple6._3
; <Start encoding Prims.MkTuple6._3>
(declare-fun Prims.MkTuple6._3 (Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple6 'a 'b 'c 'd 'e 'f) -> Tot 'c)
(declare-fun Typ_fun_725 () Type)
;;;;;;;;;;;;;;;;Typ_fun_725 kinding
(assert (HasKind Typ_fun_725
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_725)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_725)))))
;;;;;;;;;;;;;;;;Typ_fun_725 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_725)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@a4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_725)))))
(declare-fun Prims.MkTuple6._3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 728
(Term_constr_id Prims.MkTuple6._3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._3@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._3 @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._3@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple6._3@tok
Typ_fun_725))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasType (Prims.MkTuple6._3 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
@a2))
:pattern ((Prims.MkTuple6._3 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._3 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__3 @x6))
:pattern ((Prims.MkTuple6._3 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6._3>
; encoding sigelt Prims.MkTuple6._4
; <Start encoding Prims.MkTuple6._4>
(declare-fun Prims.MkTuple6._4 (Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple6 'a 'b 'c 'd 'e 'f) -> Tot 'd)
(declare-fun Typ_fun_730 () Type)
;;;;;;;;;;;;;;;;Typ_fun_730 kinding
(assert (HasKind Typ_fun_730
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_730)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_730)))))
;;;;;;;;;;;;;;;;Typ_fun_730 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_730)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@a5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_730)))))
(declare-fun Prims.MkTuple6._4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 733
(Term_constr_id Prims.MkTuple6._4@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._4@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._4 @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._4@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple6._4@tok
Typ_fun_730))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasType (Prims.MkTuple6._4 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
@a3))
:pattern ((Prims.MkTuple6._4 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._4 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__4 @x6))
:pattern ((Prims.MkTuple6._4 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6._4>
; encoding sigelt Prims.MkTuple6._5
; <Start encoding Prims.MkTuple6._5>
(declare-fun Prims.MkTuple6._5 (Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple6 'a 'b 'c 'd 'e 'f) -> Tot 'e)
(declare-fun Typ_fun_735 () Type)
;;;;;;;;;;;;;;;;Typ_fun_735 kinding
(assert (HasKind Typ_fun_735
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_735)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_735)))))
;;;;;;;;;;;;;;;;Typ_fun_735 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_735)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@a6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_735)))))
(declare-fun Prims.MkTuple6._5@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 738
(Term_constr_id Prims.MkTuple6._5@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._5 @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple6._5@tok
Typ_fun_735))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasType (Prims.MkTuple6._5 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
@a4))
:pattern ((Prims.MkTuple6._5 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._5 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__5 @x6))
:pattern ((Prims.MkTuple6._5 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6._5>
; encoding sigelt Prims.MkTuple6._6
; <Start encoding Prims.MkTuple6._6>
(declare-fun Prims.MkTuple6._6 (Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple6 'a 'b 'c 'd 'e 'f) -> Tot 'f)
(declare-fun Typ_fun_740 () Type)
;;;;;;;;;;;;;;;;Typ_fun_740 kinding
(assert (HasKind Typ_fun_740
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_740)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_740)))))
;;;;;;;;;;;;;;;;Typ_fun_740 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_740)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple6 @a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@a7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_740)))))
(declare-fun Prims.MkTuple6._6@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 743
(Term_constr_id Prims.MkTuple6._6@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkTuple6._6 @a0
@a1
@a2
@a3
@a4
@a5
@x6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple6._6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@x6)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple6._6@tok
Typ_fun_740))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasType @x6
(Prims.Tuple6 @a0
@a1
@a2
@a3
@a4
@a5)))
(HasType (Prims.MkTuple6._6 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
@a5))
:pattern ((Prims.MkTuple6._6 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (= (Prims.MkTuple6._6 @a0
@a1
@a2
@a3
@a4
@a5
@x6)
(Prims.MkTuple6__6 @x6))
:pattern ((Prims.MkTuple6._6 @a0
@a1
@a2
@a3
@a4
@a5
@x6)))))
; </end encoding Prims.MkTuple6._6>
; encoding sigelt Prims.Tuple7, Prims.MkTuple7
; <Start encoding >
; <Start encoding Prims.Tuple7>
; <start constructor Prims.Tuple7>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Tuple7 (Type Type Type Type Type Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(= 755
(Type_constr_id (Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple7@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (= (Prims.Tuple7@a0 (Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6))
@a0)
:pattern ((Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple7@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (= (Prims.Tuple7@a1 (Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6))
@a1)
:pattern ((Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple7@a2 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (= (Prims.Tuple7@a2 (Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6))
@a2)
:pattern ((Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple7@a3 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (= (Prims.Tuple7@a3 (Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6))
@a3)
:pattern ((Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple7@a4 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (= (Prims.Tuple7@a4 (Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6))
@a4)
:pattern ((Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple7@a5 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (= (Prims.Tuple7@a5 (Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6))
@a5)
:pattern ((Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple7@a6 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (= (Prims.Tuple7@a6 (Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6))
@a6)
:pattern ((Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Tuple7 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
755)
(= @a0
(Prims.Tuple7 (Prims.Tuple7@a0 @a0)
(Prims.Tuple7@a1 @a0)
(Prims.Tuple7@a2 @a0)
(Prims.Tuple7@a3 @a0)
(Prims.Tuple7@a4 @a0)
(Prims.Tuple7@a5 @a0)
(Prims.Tuple7@a6 @a0)))))
; </end constructor Prims.Tuple7>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Tuple7@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 756
(Type_constr_id Prims.Tuple7@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (= (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6))
:pattern ((ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Tuple7@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type))
(HasKind (Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)
Kind_type))
:pattern ((Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8))
(= (Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8))))))
; </end encoding Prims.Tuple7>
; <Start encoding Prims.MkTuple7>
; <start constructor Prims.MkTuple7>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkTuple7 (Type Type Type Type Type Type Type Term Term Term Term Term Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(= 762
(Term_constr_id (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__a (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@a0)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__b (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@a1)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__c (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__c (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@a2)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__d (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__d (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@a3)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__e (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__e (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@a4)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__f (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__f (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@a5)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__g (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__g (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@a6)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__1 (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@x7)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__2 (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@x8)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__3 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__3 (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@x9)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__4 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__4 (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@x10)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__5 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__5 (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@x11)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__6 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__6 (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@x12)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple7__7 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (Prims.MkTuple7__7 (Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
@x13)
:pattern ((Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkTuple7 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
762)
(= @x0
(Prims.MkTuple7 (Prims.MkTuple7__a @x0)
(Prims.MkTuple7__b @x0)
(Prims.MkTuple7__c @x0)
(Prims.MkTuple7__d @x0)
(Prims.MkTuple7__e @x0)
(Prims.MkTuple7__f @x0)
(Prims.MkTuple7__g @x0)
(Prims.MkTuple7__1 @x0)
(Prims.MkTuple7__2 @x0)
(Prims.MkTuple7__3 @x0)
(Prims.MkTuple7__4 @x0)
(Prims.MkTuple7__5 @x0)
(Prims.MkTuple7__6 @x0)
(Prims.MkTuple7__7 @x0)))))
; </end constructor Prims.MkTuple7>
;;;;;;;;;;;;;;;;(_1:'a -> _2:'b -> _3:'c -> _4:'d -> _5:'e -> _6:'f -> _7:'g -> Tot (Tuple7 'a 'b 'c 'd 'e 'f 'g))
(declare-fun Typ_fun_764 () Type)
;;;;;;;;;;;;;;;;Typ_fun_764 kinding
(assert (HasKind Typ_fun_764
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_764)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_764)))))
;;;;;;;;;;;;;;;;Typ_fun_764 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_764)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasType @x9
@a2)
(HasType @x10
@a3)
(HasType @x11
@a4)
(HasType @x12
@a5)
(HasType @x13
@a6)
(HasType @x14
@a7)
(HasType @x15
@a8))
(HasType (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
@x10)
@x11)
@x12)
@x13)
@x14)
@x15)
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
@x10)
@x11)
@x12)
@x13)
@x14)
@x15)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_764)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkTuple7
(declare-fun Prims.MkTuple7@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 767
(Term_constr_id Prims.MkTuple7@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkTuple7@tok
Typ_fun_764))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term))
(! (= (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
@x8)
@x9)
@x10)
@x11)
@x12)
@x13)
(Prims.MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7
@x8
@x9
@x10
@x11
@x12
@x13))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
@x8)
@x9)
@x10)
@x11)
@x12)
@x13)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasTypeFuel (SFuel @u0)
@x8
@a1)
(HasTypeFuel (SFuel @u0)
@x9
@a2)
(HasTypeFuel (SFuel @u0)
@x10
@a3)
(HasTypeFuel (SFuel @u0)
@x11
@a4)
(HasTypeFuel (SFuel @u0)
@x12
@a5)
(HasTypeFuel (SFuel @u0)
@x13
@a6)
(HasTypeFuel (SFuel @u0)
@x14
@a7))
(HasTypeFuel @u0
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)
(Prims.Tuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7)))
:pattern ((HasTypeFuel @u0
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)
(Prims.Tuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@a15 Type) (@a16 Type) (@a17 Type) (@a18 Type) (@a19 Type) (@a20 Type) (@a21 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)
(Prims.Tuple7 @a15
@a16
@a17
@a18
@a19
@a20
@a21))
(and (= @a7
@a21)
(= @a6
@a20)
(= @a5
@a19)
(= @a4
@a18)
(= @a3
@a17)
(= @a2
@a16)
(= @a1
@a15)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasTypeFuel @u0
@x8
@a1)
(HasTypeFuel @u0
@x9
@a2)
(HasTypeFuel @u0
@x10
@a3)
(HasTypeFuel @u0
@x11
@a4)
(HasTypeFuel @u0
@x12
@a5)
(HasTypeFuel @u0
@x13
@a6)
(HasTypeFuel @u0
@x14
@a7)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)
(Prims.Tuple7 @a15
@a16
@a17
@a18
@a19
@a20
@a21))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@a15 Type) (@a16 Type) (@a17 Type) (@a18 Type) (@a19 Type) (@a20 Type) (@a21 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)
(Prims.Tuple7 @a15
@a16
@a17
@a18
@a19
@a20
@a21))
(and (Valid (Precedes @x8
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)))
(Valid (Precedes @x9
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)))
(Valid (Precedes @x10
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)))
(Valid (Precedes @x11
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)))
(Valid (Precedes @x12
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)))
(Valid (Precedes @x13
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)))
(Valid (Precedes @x14
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple7 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14)
(Prims.Tuple7 @a15
@a16
@a17
@a18
@a19
@a20
@a21))))))
; </end encoding Prims.MkTuple7>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8))
(and (is-Prims.MkTuple7 @x1)
(= @a2
(Prims.MkTuple7__a @x1))
(= @a3
(Prims.MkTuple7__b @x1))
(= @a4
(Prims.MkTuple7__c @x1))
(= @a5
(Prims.MkTuple7__d @x1))
(= @a6
(Prims.MkTuple7__e @x1))
(= @a7
(Prims.MkTuple7__f @x1))
(= @a8
(Prims.MkTuple7__g @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8))))))
; </end encoding >
; encoding sigelt Prims.is_MkTuple7
; <Start encoding Prims.is_MkTuple7>
(declare-fun Prims.is_MkTuple7 (Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;((Tuple7 'a 'b 'c 'd 'e 'f 'g) -> Tot bool)
(declare-fun Typ_fun_769 () Type)
;;;;;;;;;;;;;;;;Typ_fun_769 kinding
(assert (HasKind Typ_fun_769
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_769)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_769)))))
;;;;;;;;;;;;;;;;Typ_fun_769 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_769)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasType @x9
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_769)))))
(declare-fun Prims.is_MkTuple7@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 772
(Term_constr_id Prims.is_MkTuple7@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.is_MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkTuple7@tok
Typ_fun_769))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasType (Prims.is_MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
Prims.bool))
:pattern ((Prims.is_MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.is_MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(BoxBool (is-Prims.MkTuple7 @x7)))
:pattern ((Prims.is_MkTuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.is_MkTuple7>
; encoding sigelt Prims.MkTuple7.'a
; <Start encoding Prims.MkTuple7.'a>
(declare-fun Prims.MkTuple7._a (Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple7._a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 774
(Type_constr_id Prims.MkTuple7._a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._a@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._a@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple7._a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasKind (Prims.MkTuple7._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
Kind_type))
:pattern ((Prims.MkTuple7._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__a @x7))
:pattern ((Prims.MkTuple7._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7.'a>
; encoding sigelt Prims.MkTuple7.'b
; <Start encoding Prims.MkTuple7.'b>
(declare-fun Prims.MkTuple7._b (Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple7._b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 776
(Type_constr_id Prims.MkTuple7._b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._b@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._b@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple7._b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasKind (Prims.MkTuple7._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
Kind_type))
:pattern ((Prims.MkTuple7._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__b @x7))
:pattern ((Prims.MkTuple7._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7.'b>
; encoding sigelt Prims.MkTuple7.'c
; <Start encoding Prims.MkTuple7.'c>
(declare-fun Prims.MkTuple7._c (Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple7._c@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 778
(Type_constr_id Prims.MkTuple7._c@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._c@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._c@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple7._c@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasKind (Prims.MkTuple7._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
Kind_type))
:pattern ((Prims.MkTuple7._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__c @x7))
:pattern ((Prims.MkTuple7._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7.'c>
; encoding sigelt Prims.MkTuple7.'d
; <Start encoding Prims.MkTuple7.'d>
(declare-fun Prims.MkTuple7._d (Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple7._d@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 780
(Type_constr_id Prims.MkTuple7._d@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._d@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._d@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple7._d@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasKind (Prims.MkTuple7._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
Kind_type))
:pattern ((Prims.MkTuple7._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__d @x7))
:pattern ((Prims.MkTuple7._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7.'d>
; encoding sigelt Prims.MkTuple7.'e
; <Start encoding Prims.MkTuple7.'e>
(declare-fun Prims.MkTuple7._e (Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple7._e@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 782
(Type_constr_id Prims.MkTuple7._e@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._e@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._e@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple7._e@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasKind (Prims.MkTuple7._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
Kind_type))
:pattern ((Prims.MkTuple7._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__e @x7))
:pattern ((Prims.MkTuple7._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7.'e>
; encoding sigelt Prims.MkTuple7.'f
; <Start encoding Prims.MkTuple7.'f>
(declare-fun Prims.MkTuple7._f (Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple7._f@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 784
(Type_constr_id Prims.MkTuple7._f@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._f@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._f@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple7._f@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasKind (Prims.MkTuple7._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
Kind_type))
:pattern ((Prims.MkTuple7._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__f @x7))
:pattern ((Prims.MkTuple7._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7.'f>
; encoding sigelt Prims.MkTuple7.'g
; <Start encoding Prims.MkTuple7.'g>
(declare-fun Prims.MkTuple7._g (Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple7._g@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 786
(Type_constr_id Prims.MkTuple7._g@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._g@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple7._g@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple7._g@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasKind (Prims.MkTuple7._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
Kind_type))
:pattern ((Prims.MkTuple7._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__g @x7))
:pattern ((Prims.MkTuple7._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7.'g>
; encoding sigelt Prims.MkTuple7._1
; <Start encoding Prims.MkTuple7._1>
(declare-fun Prims.MkTuple7._1 (Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple7 'a 'b 'c 'd 'e 'f 'g) -> Tot 'a)
(declare-fun Typ_fun_788 () Type)
;;;;;;;;;;;;;;;;Typ_fun_788 kinding
(assert (HasKind Typ_fun_788
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_788)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_788)))))
;;;;;;;;;;;;;;;;Typ_fun_788 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_788)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasType @x9
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
@a2))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_788)))))
(declare-fun Prims.MkTuple7._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 791
(Term_constr_id Prims.MkTuple7._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._1@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._1@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple7._1@tok
Typ_fun_788))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasType (Prims.MkTuple7._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
@a0))
:pattern ((Prims.MkTuple7._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__1 @x7))
:pattern ((Prims.MkTuple7._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7._1>
; encoding sigelt Prims.MkTuple7._2
; <Start encoding Prims.MkTuple7._2>
(declare-fun Prims.MkTuple7._2 (Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple7 'a 'b 'c 'd 'e 'f 'g) -> Tot 'b)
(declare-fun Typ_fun_793 () Type)
;;;;;;;;;;;;;;;;Typ_fun_793 kinding
(assert (HasKind Typ_fun_793
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_793)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_793)))))
;;;;;;;;;;;;;;;;Typ_fun_793 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_793)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasType @x9
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
@a3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_793)))))
(declare-fun Prims.MkTuple7._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 796
(Term_constr_id Prims.MkTuple7._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._2@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._2@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple7._2@tok
Typ_fun_793))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasType (Prims.MkTuple7._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
@a1))
:pattern ((Prims.MkTuple7._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__2 @x7))
:pattern ((Prims.MkTuple7._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7._2>
; encoding sigelt Prims.MkTuple7._3
; <Start encoding Prims.MkTuple7._3>
(declare-fun Prims.MkTuple7._3 (Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple7 'a 'b 'c 'd 'e 'f 'g) -> Tot 'c)
(declare-fun Typ_fun_798 () Type)
;;;;;;;;;;;;;;;;Typ_fun_798 kinding
(assert (HasKind Typ_fun_798
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_798)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_798)))))
;;;;;;;;;;;;;;;;Typ_fun_798 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_798)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasType @x9
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
@a4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_798)))))
(declare-fun Prims.MkTuple7._3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 801
(Term_constr_id Prims.MkTuple7._3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._3@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._3@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple7._3@tok
Typ_fun_798))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasType (Prims.MkTuple7._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
@a2))
:pattern ((Prims.MkTuple7._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__3 @x7))
:pattern ((Prims.MkTuple7._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7._3>
; encoding sigelt Prims.MkTuple7._4
; <Start encoding Prims.MkTuple7._4>
(declare-fun Prims.MkTuple7._4 (Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple7 'a 'b 'c 'd 'e 'f 'g) -> Tot 'd)
(declare-fun Typ_fun_803 () Type)
;;;;;;;;;;;;;;;;Typ_fun_803 kinding
(assert (HasKind Typ_fun_803
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_803)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_803)))))
;;;;;;;;;;;;;;;;Typ_fun_803 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_803)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasType @x9
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
@a5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_803)))))
(declare-fun Prims.MkTuple7._4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 806
(Term_constr_id Prims.MkTuple7._4@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._4@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._4@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple7._4@tok
Typ_fun_803))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasType (Prims.MkTuple7._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
@a3))
:pattern ((Prims.MkTuple7._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__4 @x7))
:pattern ((Prims.MkTuple7._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7._4>
; encoding sigelt Prims.MkTuple7._5
; <Start encoding Prims.MkTuple7._5>
(declare-fun Prims.MkTuple7._5 (Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple7 'a 'b 'c 'd 'e 'f 'g) -> Tot 'e)
(declare-fun Typ_fun_808 () Type)
;;;;;;;;;;;;;;;;Typ_fun_808 kinding
(assert (HasKind Typ_fun_808
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_808)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_808)))))
;;;;;;;;;;;;;;;;Typ_fun_808 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_808)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasType @x9
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
@a6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_808)))))
(declare-fun Prims.MkTuple7._5@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 811
(Term_constr_id Prims.MkTuple7._5@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple7._5@tok
Typ_fun_808))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasType (Prims.MkTuple7._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
@a4))
:pattern ((Prims.MkTuple7._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__5 @x7))
:pattern ((Prims.MkTuple7._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7._5>
; encoding sigelt Prims.MkTuple7._6
; <Start encoding Prims.MkTuple7._6>
(declare-fun Prims.MkTuple7._6 (Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple7 'a 'b 'c 'd 'e 'f 'g) -> Tot 'f)
(declare-fun Typ_fun_813 () Type)
;;;;;;;;;;;;;;;;Typ_fun_813 kinding
(assert (HasKind Typ_fun_813
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_813)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_813)))))
;;;;;;;;;;;;;;;;Typ_fun_813 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_813)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasType @x9
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
@a7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_813)))))
(declare-fun Prims.MkTuple7._6@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 816
(Term_constr_id Prims.MkTuple7._6@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple7._6@tok
Typ_fun_813))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasType (Prims.MkTuple7._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
@a5))
:pattern ((Prims.MkTuple7._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__6 @x7))
:pattern ((Prims.MkTuple7._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7._6>
; encoding sigelt Prims.MkTuple7._7
; <Start encoding Prims.MkTuple7._7>
(declare-fun Prims.MkTuple7._7 (Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple7 'a 'b 'c 'd 'e 'f 'g) -> Tot 'g)
(declare-fun Typ_fun_818 () Type)
;;;;;;;;;;;;;;;;Typ_fun_818 kinding
(assert (HasKind Typ_fun_818
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_818)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_818)))))
;;;;;;;;;;;;;;;;Typ_fun_818 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_818)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasType @x9
(Prims.Tuple7 @a2
@a3
@a4
@a5
@a6
@a7
@a8)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)
@a8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_818)))))
(declare-fun Prims.MkTuple7._7@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 821
(Term_constr_id Prims.MkTuple7._7@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)
(Prims.MkTuple7._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple7._7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@x7)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple7._7@tok
Typ_fun_818))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasType @x7
(Prims.Tuple7 @a0
@a1
@a2
@a3
@a4
@a5
@a6)))
(HasType (Prims.MkTuple7._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
@a6))
:pattern ((Prims.MkTuple7._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@x7 Term))
(! (= (Prims.MkTuple7._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)
(Prims.MkTuple7__7 @x7))
:pattern ((Prims.MkTuple7._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@x7)))))
; </end encoding Prims.MkTuple7._7>
; encoding sigelt Prims.Tuple8, Prims.MkTuple8
; <Start encoding >
; <Start encoding Prims.Tuple8>
; <start constructor Prims.Tuple8>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.Tuple8 (Type Type Type Type Type Type Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(= 833
(Type_constr_id (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple8@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (= (Prims.Tuple8@a0 (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7))
@a0)
:pattern ((Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple8@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (= (Prims.Tuple8@a1 (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7))
@a1)
:pattern ((Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple8@a2 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (= (Prims.Tuple8@a2 (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7))
@a2)
:pattern ((Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple8@a3 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (= (Prims.Tuple8@a3 (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7))
@a3)
:pattern ((Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple8@a4 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (= (Prims.Tuple8@a4 (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7))
@a4)
:pattern ((Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple8@a5 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (= (Prims.Tuple8@a5 (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7))
@a5)
:pattern ((Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple8@a6 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (= (Prims.Tuple8@a6 (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7))
@a6)
:pattern ((Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.Tuple8@a7 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (= (Prims.Tuple8@a7 (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7))
@a7)
:pattern ((Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.Tuple8 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
833)
(= @a0
(Prims.Tuple8 (Prims.Tuple8@a0 @a0)
(Prims.Tuple8@a1 @a0)
(Prims.Tuple8@a2 @a0)
(Prims.Tuple8@a3 @a0)
(Prims.Tuple8@a4 @a0)
(Prims.Tuple8@a5 @a0)
(Prims.Tuple8@a6 @a0)
(Prims.Tuple8@a7 @a0)))))
; </end constructor Prims.Tuple8>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Tuple8@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 834
(Type_constr_id Prims.Tuple8@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (= (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple8@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7))
:pattern ((ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.Tuple8@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Tuple8@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type))
(HasKind (Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)
Kind_type))
:pattern ((Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9))
(= (Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9))))))
; </end encoding Prims.Tuple8>
; <Start encoding Prims.MkTuple8>
; <start constructor Prims.MkTuple8>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkTuple8 (Type Type Type Type Type Type Type Type Term Term Term Term Term Term Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(= 840
(Term_constr_id (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__a (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@a0)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__b (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@a1)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__c (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__c (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@a2)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__d (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__d (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@a3)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__e (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__e (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@a4)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__f (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__f (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@a5)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__g (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__g (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@a6)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__h (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__h (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@a7)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__1 (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@x8)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__2 (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@x9)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__3 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__3 (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@x10)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__4 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__4 (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@x11)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__5 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__5 (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@x12)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__6 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__6 (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@x13)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__7 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__7 (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@x14)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkTuple8__8 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (Prims.MkTuple8__8 (Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
@x15)
:pattern ((Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkTuple8 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
840)
(= @x0
(Prims.MkTuple8 (Prims.MkTuple8__a @x0)
(Prims.MkTuple8__b @x0)
(Prims.MkTuple8__c @x0)
(Prims.MkTuple8__d @x0)
(Prims.MkTuple8__e @x0)
(Prims.MkTuple8__f @x0)
(Prims.MkTuple8__g @x0)
(Prims.MkTuple8__h @x0)
(Prims.MkTuple8__1 @x0)
(Prims.MkTuple8__2 @x0)
(Prims.MkTuple8__3 @x0)
(Prims.MkTuple8__4 @x0)
(Prims.MkTuple8__5 @x0)
(Prims.MkTuple8__6 @x0)
(Prims.MkTuple8__7 @x0)
(Prims.MkTuple8__8 @x0)))))
; </end constructor Prims.MkTuple8>
;;;;;;;;;;;;;;;;(_1:'a -> _2:'b -> _3:'c -> _4:'d -> _5:'e -> _6:'f -> _7:'g -> _8:'h -> Tot (Tuple8 'a 'b 'c 'd 'e 'f 'g 'h))
(declare-fun Typ_fun_842 () Type)
;;;;;;;;;;;;;;;;Typ_fun_842 kinding
(assert (HasKind Typ_fun_842
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_842)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_842)))))
;;;;;;;;;;;;;;;;Typ_fun_842 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_842)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term) (@x16 Term) (@x17 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
@a2)
(HasType @x11
@a3)
(HasType @x12
@a4)
(HasType @x13
@a5)
(HasType @x14
@a6)
(HasType @x15
@a7)
(HasType @x16
@a8)
(HasType @x17
@a9))
(HasType (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@x11)
@x12)
@x13)
@x14)
@x15)
@x16)
@x17)
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@x11)
@x12)
@x13)
@x14)
@x15)
@x16)
@x17)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_842)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkTuple8
(declare-fun Prims.MkTuple8@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 845
(Term_constr_id Prims.MkTuple8@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkTuple8@tok
Typ_fun_842))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term))
(! (= (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@x9)
@x10)
@x11)
@x12)
@x13)
@x14)
@x15)
(Prims.MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8
@x9
@x10
@x11
@x12
@x13
@x14
@x15))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
@x9)
@x10)
@x11)
@x12)
@x13)
@x14)
@x15)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term) (@x16 Term))
(! (implies (and (HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasTypeFuel (SFuel @u0)
@x9
@a1)
(HasTypeFuel (SFuel @u0)
@x10
@a2)
(HasTypeFuel (SFuel @u0)
@x11
@a3)
(HasTypeFuel (SFuel @u0)
@x12
@a4)
(HasTypeFuel (SFuel @u0)
@x13
@a5)
(HasTypeFuel (SFuel @u0)
@x14
@a6)
(HasTypeFuel (SFuel @u0)
@x15
@a7)
(HasTypeFuel (SFuel @u0)
@x16
@a8))
(HasTypeFuel @u0
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)
(Prims.Tuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8)))
:pattern ((HasTypeFuel @u0
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)
(Prims.Tuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term) (@x16 Term) (@a17 Type) (@a18 Type) (@a19 Type) (@a20 Type) (@a21 Type) (@a22 Type) (@a23 Type) (@a24 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)
(Prims.Tuple8 @a17
@a18
@a19
@a20
@a21
@a22
@a23
@a24))
(and (= @a8
@a24)
(= @a7
@a23)
(= @a6
@a22)
(= @a5
@a21)
(= @a4
@a20)
(= @a3
@a19)
(= @a2
@a18)
(= @a1
@a17)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasTypeFuel @u0
@x9
@a1)
(HasTypeFuel @u0
@x10
@a2)
(HasTypeFuel @u0
@x11
@a3)
(HasTypeFuel @u0
@x12
@a4)
(HasTypeFuel @u0
@x13
@a5)
(HasTypeFuel @u0
@x14
@a6)
(HasTypeFuel @u0
@x15
@a7)
(HasTypeFuel @u0
@x16
@a8)))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)
(Prims.Tuple8 @a17
@a18
@a19
@a20
@a21
@a22
@a23
@a24))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@x9 Term) (@x10 Term) (@x11 Term) (@x12 Term) (@x13 Term) (@x14 Term) (@x15 Term) (@x16 Term) (@a17 Type) (@a18 Type) (@a19 Type) (@a20 Type) (@a21 Type) (@a22 Type) (@a23 Type) (@a24 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)
(Prims.Tuple8 @a17
@a18
@a19
@a20
@a21
@a22
@a23
@a24))
(and (Valid (Precedes @x9
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)))
(Valid (Precedes @x10
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)))
(Valid (Precedes @x11
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)))
(Valid (Precedes @x12
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)))
(Valid (Precedes @x13
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)))
(Valid (Precedes @x14
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)))
(Valid (Precedes @x15
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)))
(Valid (Precedes @x16
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkTuple8 @a1
@a2
@a3
@a4
@a5
@a6
@a7
@a8
@x9
@x10
@x11
@x12
@x13
@x14
@x15
@x16)
(Prims.Tuple8 @a17
@a18
@a19
@a20
@a21
@a22
@a23
@a24))))))
; </end encoding Prims.MkTuple8>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9))
(and (is-Prims.MkTuple8 @x1)
(= @a2
(Prims.MkTuple8__a @x1))
(= @a3
(Prims.MkTuple8__b @x1))
(= @a4
(Prims.MkTuple8__c @x1))
(= @a5
(Prims.MkTuple8__d @x1))
(= @a6
(Prims.MkTuple8__e @x1))
(= @a7
(Prims.MkTuple8__f @x1))
(= @a8
(Prims.MkTuple8__g @x1))
(= @a9
(Prims.MkTuple8__h @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9))))))
; </end encoding >
; encoding sigelt Prims.is_MkTuple8
; <Start encoding Prims.is_MkTuple8>
(declare-fun Prims.is_MkTuple8 (Type Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;((Tuple8 'a 'b 'c 'd 'e 'f 'g 'h) -> Tot bool)
(declare-fun Typ_fun_847 () Type)
;;;;;;;;;;;;;;;;Typ_fun_847 kinding
(assert (HasKind Typ_fun_847
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_847)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_847)))))
;;;;;;;;;;;;;;;;Typ_fun_847 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_847)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_847)))))
(declare-fun Prims.is_MkTuple8@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 850
(Term_constr_id Prims.is_MkTuple8@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple8@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.is_MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkTuple8@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkTuple8@tok
Typ_fun_847))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (Prims.is_MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
Prims.bool))
:pattern ((Prims.is_MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.is_MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(BoxBool (is-Prims.MkTuple8 @x8)))
:pattern ((Prims.is_MkTuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.is_MkTuple8>
; encoding sigelt Prims.MkTuple8.'a
; <Start encoding Prims.MkTuple8.'a>
(declare-fun Prims.MkTuple8._a (Type Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple8._a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 852
(Type_constr_id Prims.MkTuple8._a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._a@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._a@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple8._a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasKind (Prims.MkTuple8._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
Kind_type))
:pattern ((Prims.MkTuple8._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__a @x8))
:pattern ((Prims.MkTuple8._a @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8.'a>
; encoding sigelt Prims.MkTuple8.'b
; <Start encoding Prims.MkTuple8.'b>
(declare-fun Prims.MkTuple8._b (Type Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple8._b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 854
(Type_constr_id Prims.MkTuple8._b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._b@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._b@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple8._b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasKind (Prims.MkTuple8._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
Kind_type))
:pattern ((Prims.MkTuple8._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__b @x8))
:pattern ((Prims.MkTuple8._b @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8.'b>
; encoding sigelt Prims.MkTuple8.'c
; <Start encoding Prims.MkTuple8.'c>
(declare-fun Prims.MkTuple8._c (Type Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple8._c@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 856
(Type_constr_id Prims.MkTuple8._c@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._c@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._c@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple8._c@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasKind (Prims.MkTuple8._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
Kind_type))
:pattern ((Prims.MkTuple8._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__c @x8))
:pattern ((Prims.MkTuple8._c @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8.'c>
; encoding sigelt Prims.MkTuple8.'d
; <Start encoding Prims.MkTuple8.'d>
(declare-fun Prims.MkTuple8._d (Type Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple8._d@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 858
(Type_constr_id Prims.MkTuple8._d@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._d@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._d@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple8._d@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasKind (Prims.MkTuple8._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
Kind_type))
:pattern ((Prims.MkTuple8._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__d @x8))
:pattern ((Prims.MkTuple8._d @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8.'d>
; encoding sigelt Prims.MkTuple8.'e
; <Start encoding Prims.MkTuple8.'e>
(declare-fun Prims.MkTuple8._e (Type Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple8._e@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 860
(Type_constr_id Prims.MkTuple8._e@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._e@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._e@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple8._e@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasKind (Prims.MkTuple8._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
Kind_type))
:pattern ((Prims.MkTuple8._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__e @x8))
:pattern ((Prims.MkTuple8._e @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8.'e>
; encoding sigelt Prims.MkTuple8.'f
; <Start encoding Prims.MkTuple8.'f>
(declare-fun Prims.MkTuple8._f (Type Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple8._f@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 862
(Type_constr_id Prims.MkTuple8._f@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._f@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._f@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple8._f@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasKind (Prims.MkTuple8._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
Kind_type))
:pattern ((Prims.MkTuple8._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__f @x8))
:pattern ((Prims.MkTuple8._f @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8.'f>
; encoding sigelt Prims.MkTuple8.'g
; <Start encoding Prims.MkTuple8.'g>
(declare-fun Prims.MkTuple8._g (Type Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple8._g@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 864
(Type_constr_id Prims.MkTuple8._g@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._g@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._g@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple8._g@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasKind (Prims.MkTuple8._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
Kind_type))
:pattern ((Prims.MkTuple8._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__g @x8))
:pattern ((Prims.MkTuple8._g @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8.'g>
; encoding sigelt Prims.MkTuple8.'h
; <Start encoding Prims.MkTuple8.'h>
(declare-fun Prims.MkTuple8._h (Type Type Type Type Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkTuple8._h@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 866
(Type_constr_id Prims.MkTuple8._h@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._h@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._h @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkTuple8._h@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkTuple8._h@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasKind (Prims.MkTuple8._h @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
Kind_type))
:pattern ((Prims.MkTuple8._h @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._h @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__h @x8))
:pattern ((Prims.MkTuple8._h @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8.'h>
; encoding sigelt Prims.MkTuple8._1
; <Start encoding Prims.MkTuple8._1>
(declare-fun Prims.MkTuple8._1 (Type Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple8 'a 'b 'c 'd 'e 'f 'g 'h) -> Tot 'a)
(declare-fun Typ_fun_868 () Type)
;;;;;;;;;;;;;;;;Typ_fun_868 kinding
(assert (HasKind Typ_fun_868
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_868)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_868)))))
;;;;;;;;;;;;;;;;Typ_fun_868 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_868)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@a2))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_868)))))
(declare-fun Prims.MkTuple8._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 871
(Term_constr_id Prims.MkTuple8._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._1@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._1@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple8._1@tok
Typ_fun_868))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (Prims.MkTuple8._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
@a0))
:pattern ((Prims.MkTuple8._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__1 @x8))
:pattern ((Prims.MkTuple8._1 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8._1>
; encoding sigelt Prims.MkTuple8._2
; <Start encoding Prims.MkTuple8._2>
(declare-fun Prims.MkTuple8._2 (Type Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple8 'a 'b 'c 'd 'e 'f 'g 'h) -> Tot 'b)
(declare-fun Typ_fun_873 () Type)
;;;;;;;;;;;;;;;;Typ_fun_873 kinding
(assert (HasKind Typ_fun_873
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_873)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_873)))))
;;;;;;;;;;;;;;;;Typ_fun_873 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_873)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@a3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_873)))))
(declare-fun Prims.MkTuple8._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 876
(Term_constr_id Prims.MkTuple8._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._2@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._2@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple8._2@tok
Typ_fun_873))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (Prims.MkTuple8._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
@a1))
:pattern ((Prims.MkTuple8._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__2 @x8))
:pattern ((Prims.MkTuple8._2 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8._2>
; encoding sigelt Prims.MkTuple8._3
; <Start encoding Prims.MkTuple8._3>
(declare-fun Prims.MkTuple8._3 (Type Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple8 'a 'b 'c 'd 'e 'f 'g 'h) -> Tot 'c)
(declare-fun Typ_fun_878 () Type)
;;;;;;;;;;;;;;;;Typ_fun_878 kinding
(assert (HasKind Typ_fun_878
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_878)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_878)))))
;;;;;;;;;;;;;;;;Typ_fun_878 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_878)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@a4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_878)))))
(declare-fun Prims.MkTuple8._3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 881
(Term_constr_id Prims.MkTuple8._3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._3@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._3@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple8._3@tok
Typ_fun_878))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (Prims.MkTuple8._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
@a2))
:pattern ((Prims.MkTuple8._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__3 @x8))
:pattern ((Prims.MkTuple8._3 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8._3>
; encoding sigelt Prims.MkTuple8._4
; <Start encoding Prims.MkTuple8._4>
(declare-fun Prims.MkTuple8._4 (Type Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple8 'a 'b 'c 'd 'e 'f 'g 'h) -> Tot 'd)
(declare-fun Typ_fun_883 () Type)
;;;;;;;;;;;;;;;;Typ_fun_883 kinding
(assert (HasKind Typ_fun_883
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_883)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_883)))))
;;;;;;;;;;;;;;;;Typ_fun_883 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_883)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@a5))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_883)))))
(declare-fun Prims.MkTuple8._4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 886
(Term_constr_id Prims.MkTuple8._4@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._4@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._4@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple8._4@tok
Typ_fun_883))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (Prims.MkTuple8._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
@a3))
:pattern ((Prims.MkTuple8._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__4 @x8))
:pattern ((Prims.MkTuple8._4 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8._4>
; encoding sigelt Prims.MkTuple8._5
; <Start encoding Prims.MkTuple8._5>
(declare-fun Prims.MkTuple8._5 (Type Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple8 'a 'b 'c 'd 'e 'f 'g 'h) -> Tot 'e)
(declare-fun Typ_fun_888 () Type)
;;;;;;;;;;;;;;;;Typ_fun_888 kinding
(assert (HasKind Typ_fun_888
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_888)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_888)))))
;;;;;;;;;;;;;;;;Typ_fun_888 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_888)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@a6))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_888)))))
(declare-fun Prims.MkTuple8._5@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 891
(Term_constr_id Prims.MkTuple8._5@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._5@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple8._5@tok
Typ_fun_888))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (Prims.MkTuple8._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
@a4))
:pattern ((Prims.MkTuple8._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__5 @x8))
:pattern ((Prims.MkTuple8._5 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8._5>
; encoding sigelt Prims.MkTuple8._6
; <Start encoding Prims.MkTuple8._6>
(declare-fun Prims.MkTuple8._6 (Type Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple8 'a 'b 'c 'd 'e 'f 'g 'h) -> Tot 'f)
(declare-fun Typ_fun_893 () Type)
;;;;;;;;;;;;;;;;Typ_fun_893 kinding
(assert (HasKind Typ_fun_893
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_893)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_893)))))
;;;;;;;;;;;;;;;;Typ_fun_893 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_893)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@a7))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_893)))))
(declare-fun Prims.MkTuple8._6@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 896
(Term_constr_id Prims.MkTuple8._6@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._6@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple8._6@tok
Typ_fun_893))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (Prims.MkTuple8._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
@a5))
:pattern ((Prims.MkTuple8._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__6 @x8))
:pattern ((Prims.MkTuple8._6 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8._6>
; encoding sigelt Prims.MkTuple8._7
; <Start encoding Prims.MkTuple8._7>
(declare-fun Prims.MkTuple8._7 (Type Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple8 'a 'b 'c 'd 'e 'f 'g 'h) -> Tot 'g)
(declare-fun Typ_fun_898 () Type)
;;;;;;;;;;;;;;;;Typ_fun_898 kinding
(assert (HasKind Typ_fun_898
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_898)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_898)))))
;;;;;;;;;;;;;;;;Typ_fun_898 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_898)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@a8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_898)))))
(declare-fun Prims.MkTuple8._7@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 901
(Term_constr_id Prims.MkTuple8._7@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._7@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple8._7@tok
Typ_fun_898))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (Prims.MkTuple8._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
@a6))
:pattern ((Prims.MkTuple8._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__7 @x8))
:pattern ((Prims.MkTuple8._7 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8._7>
; encoding sigelt Prims.MkTuple8._8
; <Start encoding Prims.MkTuple8._8>
(declare-fun Prims.MkTuple8._8 (Type Type Type Type Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(Tuple8 'a 'b 'c 'd 'e 'f 'g 'h) -> Tot 'h)
(declare-fun Typ_fun_903 () Type)
;;;;;;;;;;;;;;;;Typ_fun_903 kinding
(assert (HasKind Typ_fun_903
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_903)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_903)))))
;;;;;;;;;;;;;;;;Typ_fun_903 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_903)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@a8 Type) (@a9 Type) (@x10 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasKind @a8
Kind_type)
(HasKind @a9
Kind_type)
(HasType @x10
(Prims.Tuple8 @a2
@a3
@a4
@a5
@a6
@a7
@a8
@a9)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)
@a9))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@a8)
@a9)
@x10)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_903)))))
(declare-fun Prims.MkTuple8._8@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 906
(Term_constr_id Prims.MkTuple8._8@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._8@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)
(Prims.MkTuple8._8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkTuple8._8@tok
@a0)
@a1)
@a2)
@a3)
@a4)
@a5)
@a6)
@a7)
@x8)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkTuple8._8@tok
Typ_fun_903))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasKind @a2
Kind_type)
(HasKind @a3
Kind_type)
(HasKind @a4
Kind_type)
(HasKind @a5
Kind_type)
(HasKind @a6
Kind_type)
(HasKind @a7
Kind_type)
(HasType @x8
(Prims.Tuple8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7)))
(HasType (Prims.MkTuple8._8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
@a7))
:pattern ((Prims.MkTuple8._8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@a6 Type) (@a7 Type) (@x8 Term))
(! (= (Prims.MkTuple8._8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)
(Prims.MkTuple8__8 @x8))
:pattern ((Prims.MkTuple8._8 @a0
@a1
@a2
@a3
@a4
@a5
@a6
@a7
@x8)))))
; </end encoding Prims.MkTuple8._8>
; encoding sigelt Prims.DTuple2, Prims.MkDTuple2
; <Start encoding >
; <Start encoding Prims.DTuple2>
; <start constructor Prims.DTuple2>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.DTuple2 (Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type))
(= 918
(Type_constr_id (Prims.DTuple2 @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.DTuple2@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Prims.DTuple2@a0 (Prims.DTuple2 @a0
@a1))
@a0)
:pattern ((Prims.DTuple2 @a0
@a1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.DTuple2@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (Prims.DTuple2@a1 (Prims.DTuple2 @a0
@a1))
@a1)
:pattern ((Prims.DTuple2 @a0
@a1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.DTuple2 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
918)
(= @a0
(Prims.DTuple2 (Prims.DTuple2@a0 @a0)
(Prims.DTuple2@a1 @a0)))))
; </end constructor Prims.DTuple2>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.DTuple2@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 919
(Type_constr_id Prims.DTuple2@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.DTuple2@tok
@a0)
@a1)
(Prims.DTuple2 @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.DTuple2@tok
@a0)
@a1)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.DTuple2@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x2 Term))
(! (implies (HasType @x2
@a0)
(HasKind (ApplyTE @a1
@x2)
Kind_type))
:pattern ((ApplyTE @a1
@x2)))))
(HasKind (Prims.DTuple2 @a0
@a1)
Kind_type))
:pattern ((Prims.DTuple2 @a0
@a1)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.DTuple2 @a2
@a3))
(= (Prims.DTuple2 @a2
@a3)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.DTuple2 @a2
@a3))))))
; </end encoding Prims.DTuple2>
; <Start encoding Prims.MkDTuple2>
; <start constructor Prims.MkDTuple2>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkDTuple2 (Type Type Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(= 925
(Term_constr_id (Prims.MkDTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple2_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (Prims.MkDTuple2_a (Prims.MkDTuple2 @a0
@a1
@x2
@x3))
@a0)
:pattern ((Prims.MkDTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple2_b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (Prims.MkDTuple2_b (Prims.MkDTuple2 @a0
@a1
@x2
@x3))
@a1)
:pattern ((Prims.MkDTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple2__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (Prims.MkDTuple2__1 (Prims.MkDTuple2 @a0
@a1
@x2
@x3))
@x2)
:pattern ((Prims.MkDTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple2__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (Prims.MkDTuple2__2 (Prims.MkDTuple2 @a0
@a1
@x2
@x3))
@x3)
:pattern ((Prims.MkDTuple2 @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkDTuple2 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
925)
(= @x0
(Prims.MkDTuple2 (Prims.MkDTuple2_a @x0)
(Prims.MkDTuple2_b @x0)
(Prims.MkDTuple2__1 @x0)
(Prims.MkDTuple2__2 @x0)))))
; </end constructor Prims.MkDTuple2>
;;;;;;;;;;;;;;;;(_1:a -> _2:(b _1) -> Tot (DTuple2 a b))
(declare-fun Typ_fun_927 () Type)
;;;;;;;;;;;;;;;;Typ_fun_927 kinding
(assert (HasKind Typ_fun_927
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_927)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_927)))))
;;;;;;;;;;;;;;;;Typ_fun_927 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_927)
(forall ((@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x6 Term))
(! (implies (HasType @x6
@a2)
(HasKind (ApplyTE @a3
@x6)
Kind_type))
:pattern ((ApplyTE @a3
@x6))))
(HasType @x4
@a2)
(HasType @x5
(ApplyTE @a3
@x4)))
(HasType (ApplyEE (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
@x5)
(Prims.DTuple2 @a2
@a3)))
:pattern ((ApplyEE (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_927)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkDTuple2
(declare-fun Prims.MkDTuple2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 930
(Term_constr_id Prims.MkDTuple2@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkDTuple2@tok
Typ_fun_927))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (ApplyEE (ApplyEE (ApplyET (ApplyET Prims.MkDTuple2@tok
@a0)
@a1)
@x2)
@x3)
(Prims.MkDTuple2 @a0
@a1
@x2
@x3))
:pattern ((ApplyEE (ApplyEE (ApplyET (ApplyET Prims.MkDTuple2@tok
@a0)
@a1)
@x2)
@x3)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term))
(! (implies (and (HasKind @a1
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a1)
(HasKind (ApplyTE @a2
@x5)
Kind_type))
:pattern ((ApplyTE @a2
@x5))))
(HasTypeFuel (SFuel @u0)
@x3
@a1)
(HasTypeFuel (SFuel @u0)
@x4
(ApplyTE @a2
@x3)))
(HasTypeFuel @u0
(Prims.MkDTuple2 @a1
@a2
@x3
@x4)
(Prims.DTuple2 @a1
@a2)))
:pattern ((HasTypeFuel @u0
(Prims.MkDTuple2 @a1
@a2
@x3
@x4)
(Prims.DTuple2 @a1
@a2))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@a5 Type) (@a6 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkDTuple2 @a1
@a2
@x3
@x4)
(Prims.DTuple2 @a5
@a6))
(and (= @a2
@a6)
(= @a1
@a5)
(HasKind @a1
Kind_type)
(forall ((@x7 Term))
(! (implies (HasType @x7
@a1)
(HasKind (ApplyTE @a2
@x7)
Kind_type))
:pattern ((ApplyTE @a2
@x7))))
(HasTypeFuel @u0
@x3
@a1)
(HasTypeFuel @u0
@x4
(ApplyTE @a2
@x3))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkDTuple2 @a1
@a2
@x3
@x4)
(Prims.DTuple2 @a5
@a6))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@a5 Type) (@a6 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkDTuple2 @a1
@a2
@x3
@x4)
(Prims.DTuple2 @a5
@a6))
(and (Valid (Precedes @x3
(Prims.MkDTuple2 @a1
@a2
@x3
@x4)))
(Valid (Precedes @x4
(Prims.MkDTuple2 @a1
@a2
@x3
@x4)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkDTuple2 @a1
@a2
@x3
@x4)
(Prims.DTuple2 @a5
@a6))))))
; </end encoding Prims.MkDTuple2>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.DTuple2 @a2
@a3))
(and (is-Prims.MkDTuple2 @x1)
(= @a2
(Prims.MkDTuple2_a @x1))
(= @a3
(Prims.MkDTuple2_b @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.DTuple2 @a2
@a3))))))
; </end encoding >
; encoding sigelt Prims.is_MkDTuple2
; <Start encoding Prims.is_MkDTuple2>
(declare-fun Prims.is_MkDTuple2 (Type Type Term) Term)
;;;;;;;;;;;;;;;;((DTuple2 a b) -> Tot bool)
(declare-fun Typ_fun_932 () Type)
;;;;;;;;;;;;;;;;Typ_fun_932 kinding
(assert (HasKind Typ_fun_932
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_932)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_932)))))
;;;;;;;;;;;;;;;;Typ_fun_932 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_932)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a2)
(HasKind (ApplyTE @a3
@x5)
Kind_type))
:pattern ((ApplyTE @a3
@x5))))
(HasType @x4
(Prims.DTuple2 @a2
@a3)))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_932)))))
(declare-fun Prims.is_MkDTuple2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 935
(Term_constr_id Prims.is_MkDTuple2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.is_MkDTuple2@tok
@a0)
@a1)
@x2)
(Prims.is_MkDTuple2 @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.is_MkDTuple2@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkDTuple2@tok
Typ_fun_932))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x3 Term))
(! (implies (HasType @x3
@a0)
(HasKind (ApplyTE @a1
@x3)
Kind_type))
:pattern ((ApplyTE @a1
@x3))))
(HasType @x2
(Prims.DTuple2 @a0
@a1)))
(HasType (Prims.is_MkDTuple2 @a0
@a1
@x2)
Prims.bool))
:pattern ((Prims.is_MkDTuple2 @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.is_MkDTuple2 @a0
@a1
@x2)
(BoxBool (is-Prims.MkDTuple2 @x2)))
:pattern ((Prims.is_MkDTuple2 @a0
@a1
@x2)))))
; </end encoding Prims.is_MkDTuple2>
; encoding sigelt Prims.MkDTuple2.a
; <Start encoding Prims.MkDTuple2.a>
(declare-fun Prims.MkDTuple2.a (Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkDTuple2.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 937
(Type_constr_id Prims.MkDTuple2.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT Prims.MkDTuple2.a@tok
@a0)
@a1)
@x2)
(Prims.MkDTuple2.a @a0
@a1
@x2))
:pattern ((ApplyTE (ApplyTT (ApplyTT Prims.MkDTuple2.a@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkDTuple2.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x3 Term))
(! (implies (HasType @x3
@a0)
(HasKind (ApplyTE @a1
@x3)
Kind_type))
:pattern ((ApplyTE @a1
@x3))))
(HasType @x2
(Prims.DTuple2 @a0
@a1)))
(HasKind (Prims.MkDTuple2.a @a0
@a1
@x2)
Kind_type))
:pattern ((Prims.MkDTuple2.a @a0
@a1
@x2)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.MkDTuple2.a @a0
@a1
@x2)
(Prims.MkDTuple2_a @x2))
:pattern ((Prims.MkDTuple2.a @a0
@a1
@x2)))))
; </end encoding Prims.MkDTuple2.a>
; encoding sigelt Prims.MkDTuple2.b
; <Start encoding Prims.MkDTuple2.b>
(declare-fun Prims.MkDTuple2.b (Type Type Term Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkDTuple2.b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 940
(Type_constr_id Prims.MkDTuple2.b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (ApplyTE (ApplyTE (ApplyTT (ApplyTT Prims.MkDTuple2.b@tok
@a0)
@a1)
@x2)
@x3)
(Prims.MkDTuple2.b @a0
@a1
@x2
@x3))
:pattern ((ApplyTE (ApplyTE (ApplyTT (ApplyTT Prims.MkDTuple2.b@tok
@a0)
@a1)
@x2)
@x3)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkDTuple2.b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x4 Term))
(! (implies (HasType @x4
@a0)
(HasKind (ApplyTE @a1
@x4)
Kind_type))
:pattern ((ApplyTE @a1
@x4))))
(HasType @x2
(Prims.DTuple2 @a0
@a1))
(HasType @x3
(Prims.MkDTuple2.a @a0
@a1
@x2)))
(HasKind (Prims.MkDTuple2.b @a0
@a1
@x2
@x3)
Kind_type))
:pattern ((Prims.MkDTuple2.b @a0
@a1
@x2
@x3)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term) (@x3 Term))
(! (= (Prims.MkDTuple2.b @a0
@a1
@x2
@x3)
(ApplyTE (Prims.MkDTuple2_b @x2)
@x3))
:pattern ((Prims.MkDTuple2.b @a0
@a1
@x2
@x3)))))
; </end encoding Prims.MkDTuple2.b>
; encoding sigelt Prims.MkDTuple2._1
; <Start encoding Prims.MkDTuple2._1>
(declare-fun Prims.MkDTuple2._1 (Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(DTuple2 a b) -> Tot (MkDTuple2.a projectee))
(declare-fun Typ_fun_943 () Type)
;;;;;;;;;;;;;;;;Typ_fun_943 kinding
(assert (HasKind Typ_fun_943
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_943)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_943)))))
;;;;;;;;;;;;;;;;Typ_fun_943 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_943)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a2)
(HasKind (ApplyTE @a3
@x5)
Kind_type))
:pattern ((ApplyTE @a3
@x5))))
(HasType @x4
(Prims.DTuple2 @a2
@a3)))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
(Prims.MkDTuple2.a @a2
@a3
@x4)))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_943)))))
(declare-fun Prims.MkDTuple2._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 946
(Term_constr_id Prims.MkDTuple2._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.MkDTuple2._1@tok
@a0)
@a1)
@x2)
(Prims.MkDTuple2._1 @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.MkDTuple2._1@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkDTuple2._1@tok
Typ_fun_943))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x3 Term))
(! (implies (HasType @x3
@a0)
(HasKind (ApplyTE @a1
@x3)
Kind_type))
:pattern ((ApplyTE @a1
@x3))))
(HasType @x2
(Prims.DTuple2 @a0
@a1)))
(HasType (Prims.MkDTuple2._1 @a0
@a1
@x2)
(Prims.MkDTuple2.a @a0
@a1
@x2)))
:pattern ((Prims.MkDTuple2._1 @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.MkDTuple2._1 @a0
@a1
@x2)
(Prims.MkDTuple2__1 @x2))
:pattern ((Prims.MkDTuple2._1 @a0
@a1
@x2)))))
; </end encoding Prims.MkDTuple2._1>
; encoding sigelt Prims.MkDTuple2._2
; <Start encoding Prims.MkDTuple2._2>
(declare-fun Prims.MkDTuple2._2 (Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(DTuple2 a b) -> Tot (MkDTuple2.b projectee (MkDTuple2._1 projectee)))
(declare-fun Typ_fun_951 () Type)
;;;;;;;;;;;;;;;;Typ_fun_951 kinding
(assert (HasKind Typ_fun_951
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_951)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_951)))))
;;;;;;;;;;;;;;;;Typ_fun_951 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_951)
(forall ((@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a2)
(HasKind (ApplyTE @a3
@x5)
Kind_type))
:pattern ((ApplyTE @a3
@x5))))
(HasType @x4
(Prims.DTuple2 @a2
@a3)))
(HasType (ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)
(Prims.MkDTuple2.b @a2
@a3
@x4
(Prims.MkDTuple2._1 @a2
@a3
@x4))))
:pattern ((ApplyEE (ApplyET (ApplyET @x1
@a2)
@a3)
@x4)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_951)))))
(declare-fun Prims.MkDTuple2._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 954
(Term_constr_id Prims.MkDTuple2._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.MkDTuple2._2@tok
@a0)
@a1)
@x2)
(Prims.MkDTuple2._2 @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.MkDTuple2._2@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkDTuple2._2@tok
Typ_fun_951))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x3 Term))
(! (implies (HasType @x3
@a0)
(HasKind (ApplyTE @a1
@x3)
Kind_type))
:pattern ((ApplyTE @a1
@x3))))
(HasType @x2
(Prims.DTuple2 @a0
@a1)))
(HasType (Prims.MkDTuple2._2 @a0
@a1
@x2)
(Prims.MkDTuple2.b @a0
@a1
@x2
(Prims.MkDTuple2._1 @a0
@a1
@x2))))
:pattern ((Prims.MkDTuple2._2 @a0
@a1
@x2)))))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (Prims.MkDTuple2._2 @a0
@a1
@x2)
(Prims.MkDTuple2__2 @x2))
:pattern ((Prims.MkDTuple2._2 @a0
@a1
@x2)))))
; </end encoding Prims.MkDTuple2._2>
; encoding sigelt Prims.DTuple3, Prims.MkDTuple3
; <Start encoding >
; <Start encoding Prims.DTuple3>
; <start constructor Prims.DTuple3>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.DTuple3 (Type Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(= 966
(Type_constr_id (Prims.DTuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.DTuple3@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (= (Prims.DTuple3@a0 (Prims.DTuple3 @a0
@a1
@a2))
@a0)
:pattern ((Prims.DTuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.DTuple3@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (= (Prims.DTuple3@a1 (Prims.DTuple3 @a0
@a1
@a2))
@a1)
:pattern ((Prims.DTuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.DTuple3@a2 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (= (Prims.DTuple3@a2 (Prims.DTuple3 @a0
@a1
@a2))
@a2)
:pattern ((Prims.DTuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.DTuple3 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
966)
(= @a0
(Prims.DTuple3 (Prims.DTuple3@a0 @a0)
(Prims.DTuple3@a1 @a0)
(Prims.DTuple3@a2 @a0)))))
; </end constructor Prims.DTuple3>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.DTuple3@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 967
(Type_constr_id Prims.DTuple3@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (= (ApplyTT (ApplyTT (ApplyTT Prims.DTuple3@tok
@a0)
@a1)
@a2)
(Prims.DTuple3 @a0
@a1
@a2))
:pattern ((ApplyTT (ApplyTT (ApplyTT Prims.DTuple3@tok
@a0)
@a1)
@a2)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.DTuple3@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x3 Term))
(! (implies (HasType @x3
@a0)
(HasKind (ApplyTE @a1
@x3)
Kind_type))
:pattern ((ApplyTE @a1
@x3))))
(forall ((@x3 Term) (@x4 Term))
(! (implies (and (HasType @x3
@a0)
(HasType @x4
(ApplyTE @a1
@x3)))
(HasKind (ApplyTE (ApplyTE @a2
@x3)
@x4)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x3)
@x4)))))
(HasKind (Prims.DTuple3 @a0
@a1
@a2)
Kind_type))
:pattern ((Prims.DTuple3 @a0
@a1
@a2)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type) (@a4 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.DTuple3 @a2
@a3
@a4))
(= (Prims.DTuple3 @a2
@a3
@a4)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.DTuple3 @a2
@a3
@a4))))))
; </end encoding Prims.DTuple3>
; <Start encoding Prims.MkDTuple3>
; <start constructor Prims.MkDTuple3>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkDTuple3 (Type Type Type Term Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(= 973
(Term_constr_id (Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple3_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkDTuple3_a (Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@a0)
:pattern ((Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple3_b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkDTuple3_b (Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@a1)
:pattern ((Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple3_c (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkDTuple3_c (Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@a2)
:pattern ((Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple3__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkDTuple3__1 (Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@x3)
:pattern ((Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple3__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkDTuple3__2 (Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@x4)
:pattern ((Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple3__3 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkDTuple3__3 (Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
@x5)
:pattern ((Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkDTuple3 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
973)
(= @x0
(Prims.MkDTuple3 (Prims.MkDTuple3_a @x0)
(Prims.MkDTuple3_b @x0)
(Prims.MkDTuple3_c @x0)
(Prims.MkDTuple3__1 @x0)
(Prims.MkDTuple3__2 @x0)
(Prims.MkDTuple3__3 @x0)))))
; </end constructor Prims.MkDTuple3>
;;;;;;;;;;;;;;;;(_1:a -> _2:(b _1) -> _3:(c _1 _2) -> Tot (DTuple3 a b c))
(declare-fun Typ_fun_975 () Type)
;;;;;;;;;;;;;;;;Typ_fun_975 kinding
(assert (HasKind Typ_fun_975
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_975)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_975)))))
;;;;;;;;;;;;;;;;Typ_fun_975 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_975)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x8 Term))
(! (implies (HasType @x8
@a2)
(HasKind (ApplyTE @a3
@x8)
Kind_type))
:pattern ((ApplyTE @a3
@x8))))
(forall ((@x8 Term) (@x9 Term))
(! (implies (and (HasType @x8
@a2)
(HasType @x9
(ApplyTE @a3
@x8)))
(HasKind (ApplyTE (ApplyTE @a4
@x8)
@x9)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x8)
@x9))))
(HasType @x5
@a2)
(HasType @x6
(ApplyTE @a3
@x5))
(HasType @x7
(ApplyTE (ApplyTE @a4
@x5)
@x6)))
(HasType (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
@x6)
@x7)
(Prims.DTuple3 @a2
@a3
@a4)))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
@x6)
@x7)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_975)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkDTuple3
(declare-fun Prims.MkDTuple3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 978
(Term_constr_id Prims.MkDTuple3@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkDTuple3@tok
Typ_fun_975))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkDTuple3@tok
@a0)
@a1)
@a2)
@x3)
@x4)
@x5)
(Prims.MkDTuple3 @a0
@a1
@a2
@x3
@x4
@x5))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkDTuple3@tok
@a0)
@a1)
@a2)
@x3)
@x4)
@x5)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term))
(! (implies (and (HasKind @a1
Kind_type)
(forall ((@x7 Term))
(! (implies (HasType @x7
@a1)
(HasKind (ApplyTE @a2
@x7)
Kind_type))
:pattern ((ApplyTE @a2
@x7))))
(forall ((@x7 Term) (@x8 Term))
(! (implies (and (HasType @x7
@a1)
(HasType @x8
(ApplyTE @a2
@x7)))
(HasKind (ApplyTE (ApplyTE @a3
@x7)
@x8)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a3
@x7)
@x8))))
(HasTypeFuel (SFuel @u0)
@x4
@a1)
(HasTypeFuel (SFuel @u0)
@x5
(ApplyTE @a2
@x4))
(HasTypeFuel (SFuel @u0)
@x6
(ApplyTE (ApplyTE @a3
@x4)
@x5)))
(HasTypeFuel @u0
(Prims.MkDTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.DTuple3 @a1
@a2
@a3)))
:pattern ((HasTypeFuel @u0
(Prims.MkDTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.DTuple3 @a1
@a2
@a3))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@a7 Type) (@a8 Type) (@a9 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkDTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.DTuple3 @a7
@a8
@a9))
(and (= @a3
@a9)
(= @a2
@a8)
(= @a1
@a7)
(HasKind @a1
Kind_type)
(forall ((@x10 Term))
(! (implies (HasType @x10
@a1)
(HasKind (ApplyTE @a2
@x10)
Kind_type))
:pattern ((ApplyTE @a2
@x10))))
(forall ((@x10 Term) (@x11 Term))
(! (implies (and (HasType @x10
@a1)
(HasType @x11
(ApplyTE @a2
@x10)))
(HasKind (ApplyTE (ApplyTE @a3
@x10)
@x11)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a3
@x10)
@x11))))
(HasTypeFuel @u0
@x4
@a1)
(HasTypeFuel @u0
@x5
(ApplyTE @a2
@x4))
(HasTypeFuel @u0
@x6
(ApplyTE (ApplyTE @a3
@x4)
@x5))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkDTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.DTuple3 @a7
@a8
@a9))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@a7 Type) (@a8 Type) (@a9 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkDTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.DTuple3 @a7
@a8
@a9))
(and (Valid (Precedes @x4
(Prims.MkDTuple3 @a1
@a2
@a3
@x4
@x5
@x6)))
(Valid (Precedes @x5
(Prims.MkDTuple3 @a1
@a2
@a3
@x4
@x5
@x6)))
(Valid (Precedes @x6
(Prims.MkDTuple3 @a1
@a2
@a3
@x4
@x5
@x6)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkDTuple3 @a1
@a2
@a3
@x4
@x5
@x6)
(Prims.DTuple3 @a7
@a8
@a9))))))
; </end encoding Prims.MkDTuple3>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type) (@a4 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.DTuple3 @a2
@a3
@a4))
(and (is-Prims.MkDTuple3 @x1)
(= @a2
(Prims.MkDTuple3_a @x1))
(= @a3
(Prims.MkDTuple3_b @x1))
(= @a4
(Prims.MkDTuple3_c @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.DTuple3 @a2
@a3
@a4))))))
; </end encoding >
; encoding sigelt Prims.is_MkDTuple3
; <Start encoding Prims.is_MkDTuple3>
(declare-fun Prims.is_MkDTuple3 (Type Type Type Term) Term)
;;;;;;;;;;;;;;;;((DTuple3 a b c) -> Tot bool)
(declare-fun Typ_fun_980 () Type)
;;;;;;;;;;;;;;;;Typ_fun_980 kinding
(assert (HasKind Typ_fun_980
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_980)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_980)))))
;;;;;;;;;;;;;;;;Typ_fun_980 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_980)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x6 Term))
(! (implies (HasType @x6
@a2)
(HasKind (ApplyTE @a3
@x6)
Kind_type))
:pattern ((ApplyTE @a3
@x6))))
(forall ((@x6 Term) (@x7 Term))
(! (implies (and (HasType @x6
@a2)
(HasType @x7
(ApplyTE @a3
@x6)))
(HasKind (ApplyTE (ApplyTE @a4
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x6)
@x7))))
(HasType @x5
(Prims.DTuple3 @a2
@a3
@a4)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_980)))))
(declare-fun Prims.is_MkDTuple3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 983
(Term_constr_id Prims.is_MkDTuple3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET Prims.is_MkDTuple3@tok
@a0)
@a1)
@a2)
@x3)
(Prims.is_MkDTuple3 @a0
@a1
@a2
@x3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET Prims.is_MkDTuple3@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkDTuple3@tok
Typ_fun_980))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x4 Term))
(! (implies (HasType @x4
@a0)
(HasKind (ApplyTE @a1
@x4)
Kind_type))
:pattern ((ApplyTE @a1
@x4))))
(forall ((@x4 Term) (@x5 Term))
(! (implies (and (HasType @x4
@a0)
(HasType @x5
(ApplyTE @a1
@x4)))
(HasKind (ApplyTE (ApplyTE @a2
@x4)
@x5)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x4)
@x5))))
(HasType @x3
(Prims.DTuple3 @a0
@a1
@a2)))
(HasType (Prims.is_MkDTuple3 @a0
@a1
@a2
@x3)
Prims.bool))
:pattern ((Prims.is_MkDTuple3 @a0
@a1
@a2
@x3)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.is_MkDTuple3 @a0
@a1
@a2
@x3)
(BoxBool (is-Prims.MkDTuple3 @x3)))
:pattern ((Prims.is_MkDTuple3 @a0
@a1
@a2
@x3)))))
; </end encoding Prims.is_MkDTuple3>
; encoding sigelt Prims.MkDTuple3.a
; <Start encoding Prims.MkDTuple3.a>
(declare-fun Prims.MkDTuple3.a (Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkDTuple3.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 985
(Type_constr_id Prims.MkDTuple3.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple3.a@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkDTuple3.a @a0
@a1
@a2
@x3))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple3.a@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkDTuple3.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x4 Term))
(! (implies (HasType @x4
@a0)
(HasKind (ApplyTE @a1
@x4)
Kind_type))
:pattern ((ApplyTE @a1
@x4))))
(forall ((@x4 Term) (@x5 Term))
(! (implies (and (HasType @x4
@a0)
(HasType @x5
(ApplyTE @a1
@x4)))
(HasKind (ApplyTE (ApplyTE @a2
@x4)
@x5)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x4)
@x5))))
(HasType @x3
(Prims.DTuple3 @a0
@a1
@a2)))
(HasKind (Prims.MkDTuple3.a @a0
@a1
@a2
@x3)
Kind_type))
:pattern ((Prims.MkDTuple3.a @a0
@a1
@a2
@x3)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkDTuple3.a @a0
@a1
@a2
@x3)
(Prims.MkDTuple3_a @x3))
:pattern ((Prims.MkDTuple3.a @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkDTuple3.a>
; encoding sigelt Prims.MkDTuple3.b
; <Start encoding Prims.MkDTuple3.b>
(declare-fun Prims.MkDTuple3.b (Type Type Type Term Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkDTuple3.b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 988
(Type_constr_id Prims.MkDTuple3.b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term))
(! (= (ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple3.b@tok
@a0)
@a1)
@a2)
@x3)
@x4)
(Prims.MkDTuple3.b @a0
@a1
@a2
@x3
@x4))
:pattern ((ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple3.b@tok
@a0)
@a1)
@a2)
@x3)
@x4)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkDTuple3.b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a0)
(HasKind (ApplyTE @a1
@x5)
Kind_type))
:pattern ((ApplyTE @a1
@x5))))
(forall ((@x5 Term) (@x6 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5)))
(HasKind (ApplyTE (ApplyTE @a2
@x5)
@x6)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x5)
@x6))))
(HasType @x3
(Prims.DTuple3 @a0
@a1
@a2))
(HasType @x4
(Prims.MkDTuple3.a @a0
@a1
@a2
@x3)))
(HasKind (Prims.MkDTuple3.b @a0
@a1
@a2
@x3
@x4)
Kind_type))
:pattern ((Prims.MkDTuple3.b @a0
@a1
@a2
@x3
@x4)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term))
(! (= (Prims.MkDTuple3.b @a0
@a1
@a2
@x3
@x4)
(ApplyTE (Prims.MkDTuple3_b @x3)
@x4))
:pattern ((Prims.MkDTuple3.b @a0
@a1
@a2
@x3
@x4)))))
; </end encoding Prims.MkDTuple3.b>
; encoding sigelt Prims.MkDTuple3.c
; <Start encoding Prims.MkDTuple3.c>
(declare-fun Prims.MkDTuple3.c (Type Type Type Term Term Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkDTuple3.c@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 993
(Type_constr_id Prims.MkDTuple3.c@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (ApplyTE (ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple3.c@tok
@a0)
@a1)
@a2)
@x3)
@x4)
@x5)
(Prims.MkDTuple3.c @a0
@a1
@a2
@x3
@x4
@x5))
:pattern ((ApplyTE (ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple3.c@tok
@a0)
@a1)
@a2)
@x3)
@x4)
@x5)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkDTuple3.c@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x6 Term))
(! (implies (HasType @x6
@a0)
(HasKind (ApplyTE @a1
@x6)
Kind_type))
:pattern ((ApplyTE @a1
@x6))))
(forall ((@x6 Term) (@x7 Term))
(! (implies (and (HasType @x6
@a0)
(HasType @x7
(ApplyTE @a1
@x6)))
(HasKind (ApplyTE (ApplyTE @a2
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x6)
@x7))))
(HasType @x3
(Prims.DTuple3 @a0
@a1
@a2))
(HasType @x4
(Prims.MkDTuple3.a @a0
@a1
@a2
@x3))
(HasType @x5
(Prims.MkDTuple3.b @a0
@a1
@a2
@x3
@x4)))
(HasKind (Prims.MkDTuple3.c @a0
@a1
@a2
@x3
@x4
@x5)
Kind_type))
:pattern ((Prims.MkDTuple3.c @a0
@a1
@a2
@x3
@x4
@x5)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term) (@x4 Term) (@x5 Term))
(! (= (Prims.MkDTuple3.c @a0
@a1
@a2
@x3
@x4
@x5)
(ApplyTE (ApplyTE (Prims.MkDTuple3_c @x3)
@x4)
@x5))
:pattern ((Prims.MkDTuple3.c @a0
@a1
@a2
@x3
@x4
@x5)))))
; </end encoding Prims.MkDTuple3.c>
; encoding sigelt Prims.MkDTuple3._1
; <Start encoding Prims.MkDTuple3._1>
(declare-fun Prims.MkDTuple3._1 (Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(DTuple3 a b c) -> Tot (MkDTuple3.a projectee))
(declare-fun Typ_fun_996 () Type)
;;;;;;;;;;;;;;;;Typ_fun_996 kinding
(assert (HasKind Typ_fun_996
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_996)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_996)))))
;;;;;;;;;;;;;;;;Typ_fun_996 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_996)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x6 Term))
(! (implies (HasType @x6
@a2)
(HasKind (ApplyTE @a3
@x6)
Kind_type))
:pattern ((ApplyTE @a3
@x6))))
(forall ((@x6 Term) (@x7 Term))
(! (implies (and (HasType @x6
@a2)
(HasType @x7
(ApplyTE @a3
@x6)))
(HasKind (ApplyTE (ApplyTE @a4
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x6)
@x7))))
(HasType @x5
(Prims.DTuple3 @a2
@a3
@a4)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
(Prims.MkDTuple3.a @a2
@a3
@a4
@x5)))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_996)))))
(declare-fun Prims.MkDTuple3._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 999
(Term_constr_id Prims.MkDTuple3._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkDTuple3._1@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkDTuple3._1 @a0
@a1
@a2
@x3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkDTuple3._1@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkDTuple3._1@tok
Typ_fun_996))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x4 Term))
(! (implies (HasType @x4
@a0)
(HasKind (ApplyTE @a1
@x4)
Kind_type))
:pattern ((ApplyTE @a1
@x4))))
(forall ((@x4 Term) (@x5 Term))
(! (implies (and (HasType @x4
@a0)
(HasType @x5
(ApplyTE @a1
@x4)))
(HasKind (ApplyTE (ApplyTE @a2
@x4)
@x5)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x4)
@x5))))
(HasType @x3
(Prims.DTuple3 @a0
@a1
@a2)))
(HasType (Prims.MkDTuple3._1 @a0
@a1
@a2
@x3)
(Prims.MkDTuple3.a @a0
@a1
@a2
@x3)))
:pattern ((Prims.MkDTuple3._1 @a0
@a1
@a2
@x3)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkDTuple3._1 @a0
@a1
@a2
@x3)
(Prims.MkDTuple3__1 @x3))
:pattern ((Prims.MkDTuple3._1 @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkDTuple3._1>
; encoding sigelt Prims.MkDTuple3._2
; <Start encoding Prims.MkDTuple3._2>
(declare-fun Prims.MkDTuple3._2 (Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(DTuple3 a b c) -> Tot (MkDTuple3.b projectee (MkDTuple3._1 projectee)))
(declare-fun Typ_fun_1004 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1004 kinding
(assert (HasKind Typ_fun_1004
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1004)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1004)))))
;;;;;;;;;;;;;;;;Typ_fun_1004 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1004)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x6 Term))
(! (implies (HasType @x6
@a2)
(HasKind (ApplyTE @a3
@x6)
Kind_type))
:pattern ((ApplyTE @a3
@x6))))
(forall ((@x6 Term) (@x7 Term))
(! (implies (and (HasType @x6
@a2)
(HasType @x7
(ApplyTE @a3
@x6)))
(HasKind (ApplyTE (ApplyTE @a4
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x6)
@x7))))
(HasType @x5
(Prims.DTuple3 @a2
@a3
@a4)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
(Prims.MkDTuple3.b @a2
@a3
@a4
@x5
(Prims.MkDTuple3._1 @a2
@a3
@a4
@x5))))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1004)))))
(declare-fun Prims.MkDTuple3._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1007
(Term_constr_id Prims.MkDTuple3._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkDTuple3._2@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkDTuple3._2 @a0
@a1
@a2
@x3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkDTuple3._2@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkDTuple3._2@tok
Typ_fun_1004))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x4 Term))
(! (implies (HasType @x4
@a0)
(HasKind (ApplyTE @a1
@x4)
Kind_type))
:pattern ((ApplyTE @a1
@x4))))
(forall ((@x4 Term) (@x5 Term))
(! (implies (and (HasType @x4
@a0)
(HasType @x5
(ApplyTE @a1
@x4)))
(HasKind (ApplyTE (ApplyTE @a2
@x4)
@x5)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x4)
@x5))))
(HasType @x3
(Prims.DTuple3 @a0
@a1
@a2)))
(HasType (Prims.MkDTuple3._2 @a0
@a1
@a2
@x3)
(Prims.MkDTuple3.b @a0
@a1
@a2
@x3
(Prims.MkDTuple3._1 @a0
@a1
@a2
@x3))))
:pattern ((Prims.MkDTuple3._2 @a0
@a1
@a2
@x3)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkDTuple3._2 @a0
@a1
@a2
@x3)
(Prims.MkDTuple3__2 @x3))
:pattern ((Prims.MkDTuple3._2 @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkDTuple3._2>
; encoding sigelt Prims.MkDTuple3._3
; <Start encoding Prims.MkDTuple3._3>
(declare-fun Prims.MkDTuple3._3 (Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(DTuple3 a b c) -> Tot (MkDTuple3.c projectee (MkDTuple3._1 projectee) (MkDTuple3._2 projectee)))
(declare-fun Typ_fun_1014 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1014 kinding
(assert (HasKind Typ_fun_1014
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1014)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1014)))))
;;;;;;;;;;;;;;;;Typ_fun_1014 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1014)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x6 Term))
(! (implies (HasType @x6
@a2)
(HasKind (ApplyTE @a3
@x6)
Kind_type))
:pattern ((ApplyTE @a3
@x6))))
(forall ((@x6 Term) (@x7 Term))
(! (implies (and (HasType @x6
@a2)
(HasType @x7
(ApplyTE @a3
@x6)))
(HasKind (ApplyTE (ApplyTE @a4
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x6)
@x7))))
(HasType @x5
(Prims.DTuple3 @a2
@a3
@a4)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)
(Prims.MkDTuple3.c @a2
@a3
@a4
@x5
(Prims.MkDTuple3._1 @a2
@a3
@a4
@x5)
(Prims.MkDTuple3._2 @a2
@a3
@a4
@x5))))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@x5)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1014)))))
(declare-fun Prims.MkDTuple3._3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1017
(Term_constr_id Prims.MkDTuple3._3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkDTuple3._3@tok
@a0)
@a1)
@a2)
@x3)
(Prims.MkDTuple3._3 @a0
@a1
@a2
@x3))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET Prims.MkDTuple3._3@tok
@a0)
@a1)
@a2)
@x3)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkDTuple3._3@tok
Typ_fun_1014))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x4 Term))
(! (implies (HasType @x4
@a0)
(HasKind (ApplyTE @a1
@x4)
Kind_type))
:pattern ((ApplyTE @a1
@x4))))
(forall ((@x4 Term) (@x5 Term))
(! (implies (and (HasType @x4
@a0)
(HasType @x5
(ApplyTE @a1
@x4)))
(HasKind (ApplyTE (ApplyTE @a2
@x4)
@x5)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x4)
@x5))))
(HasType @x3
(Prims.DTuple3 @a0
@a1
@a2)))
(HasType (Prims.MkDTuple3._3 @a0
@a1
@a2
@x3)
(Prims.MkDTuple3.c @a0
@a1
@a2
@x3
(Prims.MkDTuple3._1 @a0
@a1
@a2
@x3)
(Prims.MkDTuple3._2 @a0
@a1
@a2
@x3))))
:pattern ((Prims.MkDTuple3._3 @a0
@a1
@a2
@x3)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@x3 Term))
(! (= (Prims.MkDTuple3._3 @a0
@a1
@a2
@x3)
(Prims.MkDTuple3__3 @x3))
:pattern ((Prims.MkDTuple3._3 @a0
@a1
@a2
@x3)))))
; </end encoding Prims.MkDTuple3._3>
; encoding sigelt Prims.DTuple4, Prims.MkDTuple4
; <Start encoding >
; <Start encoding Prims.DTuple4>
; <start constructor Prims.DTuple4>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.DTuple4 (Type Type Type Type) Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(= 1029
(Type_constr_id (Prims.DTuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.DTuple4@a0 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (Prims.DTuple4@a0 (Prims.DTuple4 @a0
@a1
@a2
@a3))
@a0)
:pattern ((Prims.DTuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.DTuple4@a1 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (Prims.DTuple4@a1 (Prims.DTuple4 @a0
@a1
@a2
@a3))
@a1)
:pattern ((Prims.DTuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.DTuple4@a2 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (Prims.DTuple4@a2 (Prims.DTuple4 @a0
@a1
@a2
@a3))
@a2)
:pattern ((Prims.DTuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.DTuple4@a3 (Type) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (Prims.DTuple4@a3 (Prims.DTuple4 @a0
@a1
@a2
@a3))
@a3)
:pattern ((Prims.DTuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.DTuple4 ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
1029)
(= @a0
(Prims.DTuple4 (Prims.DTuple4@a0 @a0)
(Prims.DTuple4@a1 @a0)
(Prims.DTuple4@a2 @a0)
(Prims.DTuple4@a3 @a0)))))
; </end constructor Prims.DTuple4>
;;;;;;;;;;;;;;;;token
(declare-fun Prims.DTuple4@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1030
(Type_constr_id Prims.DTuple4@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (= (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.DTuple4@tok
@a0)
@a1)
@a2)
@a3)
(Prims.DTuple4 @a0
@a1
@a2
@a3))
:pattern ((ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.DTuple4@tok
@a0)
@a1)
@a2)
@a3)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.DTuple4@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x4 Term))
(! (implies (HasType @x4
@a0)
(HasKind (ApplyTE @a1
@x4)
Kind_type))
:pattern ((ApplyTE @a1
@x4))))
(forall ((@x4 Term) (@x5 Term))
(! (implies (and (HasType @x4
@a0)
(HasType @x5
(ApplyTE @a1
@x4)))
(HasKind (ApplyTE (ApplyTE @a2
@x4)
@x5)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x4)
@x5))))
(forall ((@x4 Term) (@x5 Term) (@x6 Term))
(! (implies (and (HasType @x4
@a0)
(HasType @x5
(ApplyTE @a1
@x4))
(HasType @x6
(ApplyTE (ApplyTE @a2
@x4)
@x5)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x4)
@x5)
@x6)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x4)
@x5)
@x6)))))
(HasKind (Prims.DTuple4 @a0
@a1
@a2
@a3)
Kind_type))
:pattern ((Prims.DTuple4 @a0
@a1
@a2
@a3)))))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (implies (HasTypeFuel @u1
@x0
(Prims.DTuple4 @a2
@a3
@a4
@a5))
(= (Prims.DTuple4 @a2
@a3
@a4
@a5)
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
(Prims.DTuple4 @a2
@a3
@a4
@a5))))))
; </end encoding Prims.DTuple4>
; <Start encoding Prims.MkDTuple4>
; <start constructor Prims.MkDTuple4>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Prims.MkDTuple4 (Type Type Type Type Term Term Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(= 1036
(Term_constr_id (Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple4_a (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkDTuple4_a (Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@a0)
:pattern ((Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple4_b (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkDTuple4_b (Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@a1)
:pattern ((Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple4_c (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkDTuple4_c (Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@a2)
:pattern ((Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple4_d (Term) Type)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkDTuple4_d (Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@a3)
:pattern ((Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple4__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkDTuple4__1 (Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@x4)
:pattern ((Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple4__2 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkDTuple4__2 (Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@x5)
:pattern ((Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple4__3 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkDTuple4__3 (Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@x6)
:pattern ((Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Prims.MkDTuple4__4 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkDTuple4__4 (Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
@x7)
:pattern ((Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Prims.MkDTuple4 ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
1036)
(= @x0
(Prims.MkDTuple4 (Prims.MkDTuple4_a @x0)
(Prims.MkDTuple4_b @x0)
(Prims.MkDTuple4_c @x0)
(Prims.MkDTuple4_d @x0)
(Prims.MkDTuple4__1 @x0)
(Prims.MkDTuple4__2 @x0)
(Prims.MkDTuple4__3 @x0)
(Prims.MkDTuple4__4 @x0)))))
; </end constructor Prims.MkDTuple4>
;;;;;;;;;;;;;;;;(_1:a -> _2:(b _1) -> _3:(c _1 _2) -> _4:(d _1 _2 _3) -> Tot (DTuple4 a b c d))
(declare-fun Typ_fun_1038 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1038 kinding
(assert (HasKind Typ_fun_1038
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1038)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1038)))))
;;;;;;;;;;;;;;;;Typ_fun_1038 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1038)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term) (@x7 Term) (@x8 Term) (@x9 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x10 Term))
(! (implies (HasType @x10
@a2)
(HasKind (ApplyTE @a3
@x10)
Kind_type))
:pattern ((ApplyTE @a3
@x10))))
(forall ((@x10 Term) (@x11 Term))
(! (implies (and (HasType @x10
@a2)
(HasType @x11
(ApplyTE @a3
@x10)))
(HasKind (ApplyTE (ApplyTE @a4
@x10)
@x11)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x10)
@x11))))
(forall ((@x10 Term) (@x11 Term) (@x12 Term))
(! (implies (and (HasType @x10
@a2)
(HasType @x11
(ApplyTE @a3
@x10))
(HasType @x12
(ApplyTE (ApplyTE @a4
@x10)
@x11)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a5
@x10)
@x11)
@x12)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a5
@x10)
@x11)
@x12))))
(HasType @x6
@a2)
(HasType @x7
(ApplyTE @a3
@x6))
(HasType @x8
(ApplyTE (ApplyTE @a4
@x6)
@x7))
(HasType @x9
(ApplyTE (ApplyTE (ApplyTE @a5
@x6)
@x7)
@x8)))
(HasType (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
@x7)
@x8)
@x9)
(Prims.DTuple4 @a2
@a3
@a4
@a5)))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
@x7)
@x8)
@x9)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1038)))))
;;;;;;;;;;;;;;;;data constructor proxy: MkDTuple4
(declare-fun Prims.MkDTuple4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1041
(Term_constr_id Prims.MkDTuple4@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Prims.MkDTuple4@tok
Typ_fun_1038))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)
@x6)
@x7)
(Prims.MkDTuple4 @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
:pattern ((ApplyEE (ApplyEE (ApplyEE (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)
@x6)
@x7)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term))
(! (implies (and (HasKind @a1
Kind_type)
(forall ((@x9 Term))
(! (implies (HasType @x9
@a1)
(HasKind (ApplyTE @a2
@x9)
Kind_type))
:pattern ((ApplyTE @a2
@x9))))
(forall ((@x9 Term) (@x10 Term))
(! (implies (and (HasType @x9
@a1)
(HasType @x10
(ApplyTE @a2
@x9)))
(HasKind (ApplyTE (ApplyTE @a3
@x9)
@x10)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a3
@x9)
@x10))))
(forall ((@x9 Term) (@x10 Term) (@x11 Term))
(! (implies (and (HasType @x9
@a1)
(HasType @x10
(ApplyTE @a2
@x9))
(HasType @x11
(ApplyTE (ApplyTE @a3
@x9)
@x10)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a4
@x9)
@x10)
@x11)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a4
@x9)
@x10)
@x11))))
(HasTypeFuel (SFuel @u0)
@x5
@a1)
(HasTypeFuel (SFuel @u0)
@x6
(ApplyTE @a2
@x5))
(HasTypeFuel (SFuel @u0)
@x7
(ApplyTE (ApplyTE @a3
@x5)
@x6))
(HasTypeFuel (SFuel @u0)
@x8
(ApplyTE (ApplyTE (ApplyTE @a4
@x5)
@x6)
@x7)))
(HasTypeFuel @u0
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.DTuple4 @a1
@a2
@a3
@a4)))
:pattern ((HasTypeFuel @u0
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.DTuple4 @a1
@a2
@a3
@a4))))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@a9 Type) (@a10 Type) (@a11 Type) (@a12 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.DTuple4 @a9
@a10
@a11
@a12))
(and (= @a4
@a12)
(= @a3
@a11)
(= @a2
@a10)
(= @a1
@a9)
(HasKind @a1
Kind_type)
(forall ((@x13 Term))
(! (implies (HasType @x13
@a1)
(HasKind (ApplyTE @a2
@x13)
Kind_type))
:pattern ((ApplyTE @a2
@x13))))
(forall ((@x13 Term) (@x14 Term))
(! (implies (and (HasType @x13
@a1)
(HasType @x14
(ApplyTE @a2
@x13)))
(HasKind (ApplyTE (ApplyTE @a3
@x13)
@x14)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a3
@x13)
@x14))))
(forall ((@x13 Term) (@x14 Term) (@x15 Term))
(! (implies (and (HasType @x13
@a1)
(HasType @x14
(ApplyTE @a2
@x13))
(HasType @x15
(ApplyTE (ApplyTE @a3
@x13)
@x14)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a4
@x13)
@x14)
@x15)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a4
@x13)
@x14)
@x15))))
(HasTypeFuel @u0
@x5
@a1)
(HasTypeFuel @u0
@x6
(ApplyTE @a2
@x5))
(HasTypeFuel @u0
@x7
(ApplyTE (ApplyTE @a3
@x5)
@x6))
(HasTypeFuel @u0
@x8
(ApplyTE (ApplyTE (ApplyTE @a4
@x5)
@x6)
@x7))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.DTuple4 @a9
@a10
@a11
@a12))))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@a1 Type) (@a2 Type) (@a3 Type) (@a4 Type) (@x5 Term) (@x6 Term) (@x7 Term) (@x8 Term) (@a9 Type) (@a10 Type) (@a11 Type) (@a12 Type))
(! (implies (HasTypeFuel (SFuel @u0)
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.DTuple4 @a9
@a10
@a11
@a12))
(and (Valid (Precedes @x5
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)))
(Valid (Precedes @x6
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)))
(Valid (Precedes @x7
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)))
(Valid (Precedes @x8
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Prims.MkDTuple4 @a1
@a2
@a3
@a4
@x5
@x6
@x7
@x8)
(Prims.DTuple4 @a9
@a10
@a11
@a12))))))
; </end encoding Prims.MkDTuple4>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
(Prims.DTuple4 @a2
@a3
@a4
@a5))
(and (is-Prims.MkDTuple4 @x1)
(= @a2
(Prims.MkDTuple4_a @x1))
(= @a3
(Prims.MkDTuple4_b @x1))
(= @a4
(Prims.MkDTuple4_c @x1))
(= @a5
(Prims.MkDTuple4_d @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
(Prims.DTuple4 @a2
@a3
@a4
@a5))))))
; </end encoding >
; encoding sigelt Prims.is_MkDTuple4
; <Start encoding Prims.is_MkDTuple4>
(declare-fun Prims.is_MkDTuple4 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;((DTuple4 a b c d) -> Tot bool)
(declare-fun Typ_fun_1043 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1043 kinding
(assert (HasKind Typ_fun_1043
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1043)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1043)))))
;;;;;;;;;;;;;;;;Typ_fun_1043 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1043)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x7 Term))
(! (implies (HasType @x7
@a2)
(HasKind (ApplyTE @a3
@x7)
Kind_type))
:pattern ((ApplyTE @a3
@x7))))
(forall ((@x7 Term) (@x8 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7)))
(HasKind (ApplyTE (ApplyTE @a4
@x7)
@x8)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x7)
@x8))))
(forall ((@x7 Term) (@x8 Term) (@x9 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7))
(HasType @x9
(ApplyTE (ApplyTE @a4
@x7)
@x8)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9))))
(HasType @x6
(Prims.DTuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
Prims.bool))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1043)))))
(declare-fun Prims.is_MkDTuple4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1046
(Term_constr_id Prims.is_MkDTuple4@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkDTuple4@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.is_MkDTuple4 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.is_MkDTuple4@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.is_MkDTuple4@tok
Typ_fun_1043))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a0)
(HasKind (ApplyTE @a1
@x5)
Kind_type))
:pattern ((ApplyTE @a1
@x5))))
(forall ((@x5 Term) (@x6 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5)))
(HasKind (ApplyTE (ApplyTE @a2
@x5)
@x6)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x5)
@x6))))
(forall ((@x5 Term) (@x6 Term) (@x7 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5))
(HasType @x7
(ApplyTE (ApplyTE @a2
@x5)
@x6)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7))))
(HasType @x4
(Prims.DTuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.is_MkDTuple4 @a0
@a1
@a2
@a3
@x4)
Prims.bool))
:pattern ((Prims.is_MkDTuple4 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.is_MkDTuple4 @a0
@a1
@a2
@a3
@x4)
(BoxBool (is-Prims.MkDTuple4 @x4)))
:pattern ((Prims.is_MkDTuple4 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.is_MkDTuple4>
; encoding sigelt Prims.MkDTuple4.a
; <Start encoding Prims.MkDTuple4.a>
(declare-fun Prims.MkDTuple4.a (Type Type Type Type Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkDTuple4.a@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1048
(Type_constr_id Prims.MkDTuple4.a@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple4.a@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkDTuple4.a @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple4.a@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkDTuple4.a@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a0)
(HasKind (ApplyTE @a1
@x5)
Kind_type))
:pattern ((ApplyTE @a1
@x5))))
(forall ((@x5 Term) (@x6 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5)))
(HasKind (ApplyTE (ApplyTE @a2
@x5)
@x6)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x5)
@x6))))
(forall ((@x5 Term) (@x6 Term) (@x7 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5))
(HasType @x7
(ApplyTE (ApplyTE @a2
@x5)
@x6)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7))))
(HasType @x4
(Prims.DTuple4 @a0
@a1
@a2
@a3)))
(HasKind (Prims.MkDTuple4.a @a0
@a1
@a2
@a3
@x4)
Kind_type))
:pattern ((Prims.MkDTuple4.a @a0
@a1
@a2
@a3
@x4)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkDTuple4.a @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4_a @x4))
:pattern ((Prims.MkDTuple4.a @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkDTuple4.a>
; encoding sigelt Prims.MkDTuple4.b
; <Start encoding Prims.MkDTuple4.b>
(declare-fun Prims.MkDTuple4.b (Type Type Type Type Term Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkDTuple4.b@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1051
(Type_constr_id Prims.MkDTuple4.b@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term))
(! (= (ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple4.b@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)
(Prims.MkDTuple4.b @a0
@a1
@a2
@a3
@x4
@x5))
:pattern ((ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple4.b@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkDTuple4.b@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x6 Term))
(! (implies (HasType @x6
@a0)
(HasKind (ApplyTE @a1
@x6)
Kind_type))
:pattern ((ApplyTE @a1
@x6))))
(forall ((@x6 Term) (@x7 Term))
(! (implies (and (HasType @x6
@a0)
(HasType @x7
(ApplyTE @a1
@x6)))
(HasKind (ApplyTE (ApplyTE @a2
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x6)
@x7))))
(forall ((@x6 Term) (@x7 Term) (@x8 Term))
(! (implies (and (HasType @x6
@a0)
(HasType @x7
(ApplyTE @a1
@x6))
(HasType @x8
(ApplyTE (ApplyTE @a2
@x6)
@x7)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x6)
@x7)
@x8)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x6)
@x7)
@x8))))
(HasType @x4
(Prims.DTuple4 @a0
@a1
@a2
@a3))
(HasType @x5
(Prims.MkDTuple4.a @a0
@a1
@a2
@a3
@x4)))
(HasKind (Prims.MkDTuple4.b @a0
@a1
@a2
@a3
@x4
@x5)
Kind_type))
:pattern ((Prims.MkDTuple4.b @a0
@a1
@a2
@a3
@x4
@x5)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term))
(! (= (Prims.MkDTuple4.b @a0
@a1
@a2
@a3
@x4
@x5)
(ApplyTE (Prims.MkDTuple4_b @x4)
@x5))
:pattern ((Prims.MkDTuple4.b @a0
@a1
@a2
@a3
@x4
@x5)))))
; </end encoding Prims.MkDTuple4.b>
; encoding sigelt Prims.MkDTuple4.c
; <Start encoding Prims.MkDTuple4.c>
(declare-fun Prims.MkDTuple4.c (Type Type Type Type Term Term Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkDTuple4.c@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1056
(Type_constr_id Prims.MkDTuple4.c@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term))
(! (= (ApplyTE (ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple4.c@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)
@x6)
(Prims.MkDTuple4.c @a0
@a1
@a2
@a3
@x4
@x5
@x6))
:pattern ((ApplyTE (ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple4.c@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)
@x6)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkDTuple4.c@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x7 Term))
(! (implies (HasType @x7
@a0)
(HasKind (ApplyTE @a1
@x7)
Kind_type))
:pattern ((ApplyTE @a1
@x7))))
(forall ((@x7 Term) (@x8 Term))
(! (implies (and (HasType @x7
@a0)
(HasType @x8
(ApplyTE @a1
@x7)))
(HasKind (ApplyTE (ApplyTE @a2
@x7)
@x8)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x7)
@x8))))
(forall ((@x7 Term) (@x8 Term) (@x9 Term))
(! (implies (and (HasType @x7
@a0)
(HasType @x8
(ApplyTE @a1
@x7))
(HasType @x9
(ApplyTE (ApplyTE @a2
@x7)
@x8)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x7)
@x8)
@x9)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x7)
@x8)
@x9))))
(HasType @x4
(Prims.DTuple4 @a0
@a1
@a2
@a3))
(HasType @x5
(Prims.MkDTuple4.a @a0
@a1
@a2
@a3
@x4))
(HasType @x6
(Prims.MkDTuple4.b @a0
@a1
@a2
@a3
@x4
@x5)))
(HasKind (Prims.MkDTuple4.c @a0
@a1
@a2
@a3
@x4
@x5
@x6)
Kind_type))
:pattern ((Prims.MkDTuple4.c @a0
@a1
@a2
@a3
@x4
@x5
@x6)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term))
(! (= (Prims.MkDTuple4.c @a0
@a1
@a2
@a3
@x4
@x5
@x6)
(ApplyTE (ApplyTE (Prims.MkDTuple4_c @x4)
@x5)
@x6))
:pattern ((Prims.MkDTuple4.c @a0
@a1
@a2
@a3
@x4
@x5
@x6)))))
; </end encoding Prims.MkDTuple4.c>
; encoding sigelt Prims.MkDTuple4.d
; <Start encoding Prims.MkDTuple4.d>
(declare-fun Prims.MkDTuple4.d (Type Type Type Type Term Term Term Term) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.MkDTuple4.d@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1064
(Type_constr_id Prims.MkDTuple4.d@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (ApplyTE (ApplyTE (ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple4.d@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)
@x6)
@x7)
(Prims.MkDTuple4.d @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7))
:pattern ((ApplyTE (ApplyTE (ApplyTE (ApplyTE (ApplyTT (ApplyTT (ApplyTT (ApplyTT Prims.MkDTuple4.d@tok
@a0)
@a1)
@a2)
@a3)
@x4)
@x5)
@x6)
@x7)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.MkDTuple4.d@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x8 Term))
(! (implies (HasType @x8
@a0)
(HasKind (ApplyTE @a1
@x8)
Kind_type))
:pattern ((ApplyTE @a1
@x8))))
(forall ((@x8 Term) (@x9 Term))
(! (implies (and (HasType @x8
@a0)
(HasType @x9
(ApplyTE @a1
@x8)))
(HasKind (ApplyTE (ApplyTE @a2
@x8)
@x9)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x8)
@x9))))
(forall ((@x8 Term) (@x9 Term) (@x10 Term))
(! (implies (and (HasType @x8
@a0)
(HasType @x9
(ApplyTE @a1
@x8))
(HasType @x10
(ApplyTE (ApplyTE @a2
@x8)
@x9)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x8)
@x9)
@x10)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x8)
@x9)
@x10))))
(HasType @x4
(Prims.DTuple4 @a0
@a1
@a2
@a3))
(HasType @x5
(Prims.MkDTuple4.a @a0
@a1
@a2
@a3
@x4))
(HasType @x6
(Prims.MkDTuple4.b @a0
@a1
@a2
@a3
@x4
@x5))
(HasType @x7
(Prims.MkDTuple4.c @a0
@a1
@a2
@a3
@x4
@x5
@x6)))
(HasKind (Prims.MkDTuple4.d @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)
Kind_type))
:pattern ((Prims.MkDTuple4.d @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
;;;;;;;;;;;;;;;;projector axiom
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term) (@x5 Term) (@x6 Term) (@x7 Term))
(! (= (Prims.MkDTuple4.d @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)
(ApplyTE (ApplyTE (ApplyTE (Prims.MkDTuple4_d @x4)
@x5)
@x6)
@x7))
:pattern ((Prims.MkDTuple4.d @a0
@a1
@a2
@a3
@x4
@x5
@x6
@x7)))))
; </end encoding Prims.MkDTuple4.d>
; encoding sigelt Prims.MkDTuple4._1
; <Start encoding Prims.MkDTuple4._1>
(declare-fun Prims.MkDTuple4._1 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(DTuple4 a b c d) -> Tot (MkDTuple4.a projectee))
(declare-fun Typ_fun_1067 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1067 kinding
(assert (HasKind Typ_fun_1067
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1067)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1067)))))
;;;;;;;;;;;;;;;;Typ_fun_1067 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1067)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x7 Term))
(! (implies (HasType @x7
@a2)
(HasKind (ApplyTE @a3
@x7)
Kind_type))
:pattern ((ApplyTE @a3
@x7))))
(forall ((@x7 Term) (@x8 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7)))
(HasKind (ApplyTE (ApplyTE @a4
@x7)
@x8)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x7)
@x8))))
(forall ((@x7 Term) (@x8 Term) (@x9 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7))
(HasType @x9
(ApplyTE (ApplyTE @a4
@x7)
@x8)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9))))
(HasType @x6
(Prims.DTuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkDTuple4.a @a2
@a3
@a4
@a5
@x6)))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1067)))))
(declare-fun Prims.MkDTuple4._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1070
(Term_constr_id Prims.MkDTuple4._1@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4._1@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkDTuple4._1 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4._1@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkDTuple4._1@tok
Typ_fun_1067))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a0)
(HasKind (ApplyTE @a1
@x5)
Kind_type))
:pattern ((ApplyTE @a1
@x5))))
(forall ((@x5 Term) (@x6 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5)))
(HasKind (ApplyTE (ApplyTE @a2
@x5)
@x6)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x5)
@x6))))
(forall ((@x5 Term) (@x6 Term) (@x7 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5))
(HasType @x7
(ApplyTE (ApplyTE @a2
@x5)
@x6)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7))))
(HasType @x4
(Prims.DTuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.MkDTuple4._1 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4.a @a0
@a1
@a2
@a3
@x4)))
:pattern ((Prims.MkDTuple4._1 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkDTuple4._1 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4__1 @x4))
:pattern ((Prims.MkDTuple4._1 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkDTuple4._1>
; encoding sigelt Prims.MkDTuple4._2
; <Start encoding Prims.MkDTuple4._2>
(declare-fun Prims.MkDTuple4._2 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(DTuple4 a b c d) -> Tot (MkDTuple4.b projectee (MkDTuple4._1 projectee)))
(declare-fun Typ_fun_1075 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1075 kinding
(assert (HasKind Typ_fun_1075
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1075)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1075)))))
;;;;;;;;;;;;;;;;Typ_fun_1075 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1075)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x7 Term))
(! (implies (HasType @x7
@a2)
(HasKind (ApplyTE @a3
@x7)
Kind_type))
:pattern ((ApplyTE @a3
@x7))))
(forall ((@x7 Term) (@x8 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7)))
(HasKind (ApplyTE (ApplyTE @a4
@x7)
@x8)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x7)
@x8))))
(forall ((@x7 Term) (@x8 Term) (@x9 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7))
(HasType @x9
(ApplyTE (ApplyTE @a4
@x7)
@x8)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9))))
(HasType @x6
(Prims.DTuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkDTuple4.b @a2
@a3
@a4
@a5
@x6
(Prims.MkDTuple4._1 @a2
@a3
@a4
@a5
@x6))))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1075)))))
(declare-fun Prims.MkDTuple4._2@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1078
(Term_constr_id Prims.MkDTuple4._2@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4._2@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkDTuple4._2 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4._2@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkDTuple4._2@tok
Typ_fun_1075))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a0)
(HasKind (ApplyTE @a1
@x5)
Kind_type))
:pattern ((ApplyTE @a1
@x5))))
(forall ((@x5 Term) (@x6 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5)))
(HasKind (ApplyTE (ApplyTE @a2
@x5)
@x6)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x5)
@x6))))
(forall ((@x5 Term) (@x6 Term) (@x7 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5))
(HasType @x7
(ApplyTE (ApplyTE @a2
@x5)
@x6)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7))))
(HasType @x4
(Prims.DTuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.MkDTuple4._2 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4.b @a0
@a1
@a2
@a3
@x4
(Prims.MkDTuple4._1 @a0
@a1
@a2
@a3
@x4))))
:pattern ((Prims.MkDTuple4._2 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkDTuple4._2 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4__2 @x4))
:pattern ((Prims.MkDTuple4._2 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkDTuple4._2>
; encoding sigelt Prims.MkDTuple4._3
; <Start encoding Prims.MkDTuple4._3>
(declare-fun Prims.MkDTuple4._3 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(DTuple4 a b c d) -> Tot (MkDTuple4.c projectee (MkDTuple4._1 projectee) (MkDTuple4._2 projectee)))
(declare-fun Typ_fun_1085 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1085 kinding
(assert (HasKind Typ_fun_1085
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1085)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1085)))))
;;;;;;;;;;;;;;;;Typ_fun_1085 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1085)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x7 Term))
(! (implies (HasType @x7
@a2)
(HasKind (ApplyTE @a3
@x7)
Kind_type))
:pattern ((ApplyTE @a3
@x7))))
(forall ((@x7 Term) (@x8 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7)))
(HasKind (ApplyTE (ApplyTE @a4
@x7)
@x8)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x7)
@x8))))
(forall ((@x7 Term) (@x8 Term) (@x9 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7))
(HasType @x9
(ApplyTE (ApplyTE @a4
@x7)
@x8)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9))))
(HasType @x6
(Prims.DTuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkDTuple4.c @a2
@a3
@a4
@a5
@x6
(Prims.MkDTuple4._1 @a2
@a3
@a4
@a5
@x6)
(Prims.MkDTuple4._2 @a2
@a3
@a4
@a5
@x6))))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1085)))))
(declare-fun Prims.MkDTuple4._3@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1088
(Term_constr_id Prims.MkDTuple4._3@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4._3@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkDTuple4._3 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4._3@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkDTuple4._3@tok
Typ_fun_1085))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a0)
(HasKind (ApplyTE @a1
@x5)
Kind_type))
:pattern ((ApplyTE @a1
@x5))))
(forall ((@x5 Term) (@x6 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5)))
(HasKind (ApplyTE (ApplyTE @a2
@x5)
@x6)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x5)
@x6))))
(forall ((@x5 Term) (@x6 Term) (@x7 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5))
(HasType @x7
(ApplyTE (ApplyTE @a2
@x5)
@x6)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7))))
(HasType @x4
(Prims.DTuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.MkDTuple4._3 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4.c @a0
@a1
@a2
@a3
@x4
(Prims.MkDTuple4._1 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4._2 @a0
@a1
@a2
@a3
@x4))))
:pattern ((Prims.MkDTuple4._3 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkDTuple4._3 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4__3 @x4))
:pattern ((Prims.MkDTuple4._3 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkDTuple4._3>
; encoding sigelt Prims.MkDTuple4._4
; <Start encoding Prims.MkDTuple4._4>
(declare-fun Prims.MkDTuple4._4 (Type Type Type Type Term) Term)
;;;;;;;;;;;;;;;;(projectee:(DTuple4 a b c d) -> Tot (MkDTuple4.d projectee (MkDTuple4._1 projectee) (MkDTuple4._2 projectee) (MkDTuple4._3 projectee)))
(declare-fun Typ_fun_1097 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1097 kinding
(assert (HasKind Typ_fun_1097
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1097)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1097)))))
;;;;;;;;;;;;;;;;Typ_fun_1097 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1097)
(forall ((@a2 Type) (@a3 Type) (@a4 Type) (@a5 Type) (@x6 Term))
(! (implies (and (HasKind @a2
Kind_type)
(forall ((@x7 Term))
(! (implies (HasType @x7
@a2)
(HasKind (ApplyTE @a3
@x7)
Kind_type))
:pattern ((ApplyTE @a3
@x7))))
(forall ((@x7 Term) (@x8 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7)))
(HasKind (ApplyTE (ApplyTE @a4
@x7)
@x8)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a4
@x7)
@x8))))
(forall ((@x7 Term) (@x8 Term) (@x9 Term))
(! (implies (and (HasType @x7
@a2)
(HasType @x8
(ApplyTE @a3
@x7))
(HasType @x9
(ApplyTE (ApplyTE @a4
@x7)
@x8)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a5
@x7)
@x8)
@x9))))
(HasType @x6
(Prims.DTuple4 @a2
@a3
@a4
@a5)))
(HasType (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)
(Prims.MkDTuple4.d @a2
@a3
@a4
@a5
@x6
(Prims.MkDTuple4._1 @a2
@a3
@a4
@a5
@x6)
(Prims.MkDTuple4._2 @a2
@a3
@a4
@a5
@x6)
(Prims.MkDTuple4._3 @a2
@a3
@a4
@a5
@x6))))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET @x1
@a2)
@a3)
@a4)
@a5)
@x6)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1097)))))
(declare-fun Prims.MkDTuple4._4@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1100
(Term_constr_id Prims.MkDTuple4._4@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4._4@tok
@a0)
@a1)
@a2)
@a3)
@x4)
(Prims.MkDTuple4._4 @a0
@a1
@a2
@a3
@x4))
:pattern ((ApplyEE (ApplyET (ApplyET (ApplyET (ApplyET Prims.MkDTuple4._4@tok
@a0)
@a1)
@a2)
@a3)
@x4)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.MkDTuple4._4@tok
Typ_fun_1097))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@x5 Term))
(! (implies (HasType @x5
@a0)
(HasKind (ApplyTE @a1
@x5)
Kind_type))
:pattern ((ApplyTE @a1
@x5))))
(forall ((@x5 Term) (@x6 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5)))
(HasKind (ApplyTE (ApplyTE @a2
@x5)
@x6)
Kind_type))
:pattern ((ApplyTE (ApplyTE @a2
@x5)
@x6))))
(forall ((@x5 Term) (@x6 Term) (@x7 Term))
(! (implies (and (HasType @x5
@a0)
(HasType @x6
(ApplyTE @a1
@x5))
(HasType @x7
(ApplyTE (ApplyTE @a2
@x5)
@x6)))
(HasKind (ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7)
Kind_type))
:pattern ((ApplyTE (ApplyTE (ApplyTE @a3
@x5)
@x6)
@x7))))
(HasType @x4
(Prims.DTuple4 @a0
@a1
@a2
@a3)))
(HasType (Prims.MkDTuple4._4 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4.d @a0
@a1
@a2
@a3
@x4
(Prims.MkDTuple4._1 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4._2 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4._3 @a0
@a1
@a2
@a3
@x4))))
:pattern ((Prims.MkDTuple4._4 @a0
@a1
@a2
@a3
@x4)))))
(assert (forall ((@a0 Type) (@a1 Type) (@a2 Type) (@a3 Type) (@x4 Term))
(! (= (Prims.MkDTuple4._4 @a0
@a1
@a2
@a3
@x4)
(Prims.MkDTuple4__4 @x4))
:pattern ((Prims.MkDTuple4._4 @a0
@a1
@a2
@a3
@x4)))))
; </end encoding Prims.MkDTuple4._4>
; encoding sigelt Prims.as_requires
; <Start encoding Prims.as_requires>
(declare-fun Prims.as_requires (Type Type) Type)
(declare-fun Prims.as_requires@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1101
(Type_constr_id Prims.as_requires@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type))
(! (= (ApplyTT (ApplyTT Prims.as_requires@tok
@a0)
@a1)
(Prims.as_requires @a0
@a1))
:pattern ((ApplyTT (ApplyTT Prims.as_requires@tok
@a0)
@a1)))))
(declare-fun Typ_lam_1102 (Type) Type)
;;;;;;;;;;;;;;;;Typ_lam interpretation
(assert (forall ((@x0 Term) (@a1 Type))
(! (implies (HasType @x0
@a1)
(= (ApplyTE (Typ_lam_1102 @a1)
@x0)
Prims.True))
:pattern ((ApplyTE (Typ_lam_1102 @a1)
@x0)))))
;;;;;;;;;;;;;;;;Typ_lam kinding
(assert (forall ((@a0 Type))
(! (and (is-Kind_arrow (PreKind (Typ_lam_1102 @a0)))
(forall ((@x1 Term))
(! (implies (HasType @x1
@a0)
(HasKind (ApplyTE (Typ_lam_1102 @a0)
@x1)
Kind_type))
:pattern ((ApplyTE (Typ_lam_1102 @a0)
@x1)))))
:pattern ((Typ_lam_1102 @a0)))))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@a2 Type))
(! (implies (forall ((@x3 Term))
(! (implies (HasType @x3
@a0)
(HasKind (ApplyTE @a2
@x3)
Kind_type))
:pattern ((ApplyTE @a2
@x3))))
(HasKind (ApplyTT @a2
@a2)
Kind_type))
:pattern ((ApplyTT @a2
@a2)))))
(= (Prims.as_requires @a0
@a1)
(ApplyTT @a1
(Typ_lam_1102 @a0))))
:pattern ((Prims.as_requires @a0
@a1)))))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (forall ((@a0 Type) (@a1 Type))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@a2 Type))
(! (implies (forall ((@x3 Term))
(! (implies (HasType @x3
@a0)
(HasKind (ApplyTE @a2
@x3)
Kind_type))
:pattern ((ApplyTE @a2
@x3))))
(HasKind (ApplyTT @a2
@a2)
Kind_type))
:pattern ((ApplyTT @a2
@a2)))))
(HasKind (Prims.as_requires @a0
@a1)
Kind_type))
:pattern ((Prims.as_requires @a0
@a1)))))
; </end encoding Prims.as_requires>
; encoding sigelt Prims.as_ensures
; <Start encoding Prims.as_ensures>
(declare-fun Prims.as_ensures (Type Type Term) Type)
(declare-fun Prims.as_ensures@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1103
(Type_constr_id Prims.as_ensures@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyTE (ApplyTT (ApplyTT Prims.as_ensures@tok
@a0)
@a1)
@x2)
(Prims.as_ensures @a0
@a1
@x2))
:pattern ((ApplyTE (ApplyTT (ApplyTT Prims.as_ensures@tok
@a0)
@a1)
@x2)))))
(declare-fun Typ_lam_1104 (Term Type) Type)
;;;;;;;;;;;;;;;;Typ_lam interpretation
(assert (forall ((@x0 Term) (@x1 Term) (@a2 Type))
(! (implies (HasType @x0
@a2)
(= (ApplyTE (Typ_lam_1104 @x1
@a2)
@x0)
(Prims.l_not (Prims.b2t (Prims.op_Equality @a2
@x0
@x1)))))
:pattern ((ApplyTE (Typ_lam_1104 @x1
@a2)
@x0)))))
;;;;;;;;;;;;;;;;Typ_lam kinding
(assert (forall ((@x0 Term) (@a1 Type))
(! (and (is-Kind_arrow (PreKind (Typ_lam_1104 @x0
@a1)))
(forall ((@x2 Term))
(! (implies (HasType @x2
@a1)
(HasKind (ApplyTE (Typ_lam_1104 @x0
@a1)
@x2)
Kind_type))
:pattern ((ApplyTE (Typ_lam_1104 @x0
@a1)
@x2)))))
:pattern ((Typ_lam_1104 @x0
@a1)))))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@a3 Type))
(! (implies (forall ((@x4 Term))
(! (implies (HasType @x4
@a0)
(HasKind (ApplyTE @a3
@x4)
Kind_type))
:pattern ((ApplyTE @a3
@x4))))
(HasKind (ApplyTT @a3
@a3)
Kind_type))
:pattern ((ApplyTT @a3
@a3))))
(HasType @x2
@a0))
(= (Valid (Prims.as_ensures @a0
@a1
@x2))
(not (Valid (ApplyTT @a1
(Typ_lam_1104 @x2
@a0))))))
:pattern ((Valid (Prims.as_ensures @a0
@a1
@x2))))))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(forall ((@a3 Type))
(! (implies (forall ((@x4 Term))
(! (implies (HasType @x4
@a0)
(HasKind (ApplyTE @a3
@x4)
Kind_type))
:pattern ((ApplyTE @a3
@x4))))
(HasKind (ApplyTT @a3
@a3)
Kind_type))
:pattern ((ApplyTT @a3
@a3))))
(HasType @x2
@a0))
(HasKind (Prims.as_ensures @a0
@a1
@x2)
Kind_type))
:pattern ((Prims.as_ensures @a0
@a1
@x2)))))
; </end encoding Prims.as_ensures>
; encoding sigelt Prims.fst
; <Start encoding Prims.fst>
(declare-fun Prims.fst (Type Type Term) Term)
(declare-fun Prims.fst@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1106
(Term_constr_id Prims.fst@tok)))
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (= (ApplyEE (ApplyET (ApplyET Prims.fst@tok
@a0)
@a1)
@x2)
(Prims.fst @a0
@a1
@x2))
:pattern ((ApplyEE (ApplyET (ApplyET Prims.fst@tok
@a0)
@a1)
@x2)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.fst@tok
Typ_fun_493))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Prims.Tuple2 @a0
@a1)))
(HasType (Prims.fst @a0
@a1
@x2)
@a0))
:pattern ((Prims.fst @a0
@a1
@x2)))))
; </end encoding Prims.fst>
; encoding sigelt let Prims.fst : ((Tuple2 'a 'b) -> Tot 'a)
; <Start encoding Prims.fst>
;;;;;;;;;;;;;;;;Equation for Prims.fst
(assert (forall ((@a0 Type) (@a1 Type) (@x2 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasKind @a1
Kind_type)
(HasType @x2
(Prims.Tuple2 @a0
@a1)))
(= (Prims.fst @a0
@a1
@x2)
(Prims.MkTuple2._1 @a0
@a1
@x2)))
:pattern ((Prims.fst @a0
@a1
@x2)))))
; </end encoding Prims.fst>
; encoding sigelt Prims.Let
; <Start encoding Prims.Let>
(declare-fun Prims.Let (Type Term Type) Type)
(declare-fun Prims.Let@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1107
(Type_constr_id Prims.Let@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term) (@a2 Type))
(! (= (ApplyTT (ApplyTE (ApplyTT Prims.Let@tok
@a0)
@x1)
@a2)
(Prims.Let @a0
@x1
@a2))
:pattern ((ApplyTT (ApplyTE (ApplyTT Prims.Let@tok
@a0)
@x1)
@a2)))))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (forall ((@a0 Type) (@x1 Term) (@a2 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
@a0)
(forall ((@x3 Term))
(! (implies (HasType @x3
@a0)
(HasKind (ApplyTE @a2
@x3)
Kind_type))
:pattern ((ApplyTE @a2
@x3)))))
(= (Prims.Let @a0
@x1
@a2)
(ApplyTE @a2
@x1)))
:pattern ((Prims.Let @a0
@x1
@a2)))))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (forall ((@a0 Type) (@x1 Term) (@a2 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
@a0)
(forall ((@x3 Term))
(! (implies (HasType @x3
@a0)
(HasKind (ApplyTE @a2
@x3)
Kind_type))
:pattern ((ApplyTE @a2
@x3)))))
(HasKind (Prims.Let @a0
@x1
@a2)
Kind_type))
:pattern ((Prims.Let @a0
@x1
@a2)))))
; </end encoding Prims.Let>
; encoding sigelt Prims.InductionHyp
; <Start encoding Prims.InductionHyp>
(declare-fun Prims.InductionHyp (Type Term Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.InductionHyp@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1109
(Type_constr_id Prims.InductionHyp@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type) (@x1 Term) (@a2 Type))
(! (= (ApplyTT (ApplyTE (ApplyTT Prims.InductionHyp@tok
@a0)
@x1)
@a2)
(Prims.InductionHyp @a0
@x1
@a2))
:pattern ((ApplyTT (ApplyTE (ApplyTT Prims.InductionHyp@tok
@a0)
@x1)
@a2)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.InductionHyp@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type) (@x1 Term) (@a2 Type))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
@a0)
(HasKind @a2
Kind_type))
(HasKind (Prims.InductionHyp @a0
@x1
@a2)
Kind_type))
:pattern ((Prims.InductionHyp @a0
@x1
@a2)))))
; </end encoding Prims.InductionHyp>
; encoding sigelt Prims.by_induction_on
; <Start encoding Prims.by_induction_on>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims.by_induction_on (Type Type Term Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims.by_induction_on@tok () Term)
; </end encoding Prims.by_induction_on>
; encoding sigelt Prims._assume
; <Start encoding Prims._assume>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims._assume (Type Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims._assume@tok () Term)
; </end encoding Prims._assume>
; encoding sigelt Prims.admit
; <Start encoding Prims.admit>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims.admit (Type Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims.admit@tok () Term)
; </end encoding Prims.admit>
; encoding sigelt Prims.magic
; <Start encoding Prims.magic>
(declare-fun Prims.magic (Type Term) Term)
;;;;;;;;;;;;;;;;(unit -> Tot a)
(declare-fun Typ_fun_1111 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1111 kinding
(assert (HasKind Typ_fun_1111
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1111)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1111)))))
;;;;;;;;;;;;;;;;Typ_fun_1111 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1111)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
Prims.unit))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
@a2))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1111)))))
(declare-fun Prims.magic@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1114
(Term_constr_id Prims.magic@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.magic@tok
@a0)
@x1)
(Prims.magic @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.magic@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.magic@tok
Typ_fun_1111))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
Prims.unit))
(HasType (Prims.magic @a0
@x1)
@a0))
:pattern ((Prims.magic @a0
@x1)))))
; </end encoding Prims.magic>
; encoding sigelt Prims.admitP
; <Start encoding Prims.admitP>
(declare-fun Prims.admitP (Type) Term)
(declare-fun Non_total_Typ_fun_1115 () Type)
(assert (HasKind Non_total_Typ_fun_1115
Kind_type))
;;;;;;;;;;;;;;;;pre-typing
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Non_total_Typ_fun_1115)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Non_total_Typ_fun_1115)))))
(declare-fun Prims.admitP@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1117
(Term_constr_id Prims.admitP@tok)))
(assert (forall ((@a0 Type))
(! (= (ApplyET Prims.admitP@tok
@a0)
(Prims.admitP @a0))
:pattern ((ApplyET Prims.admitP@tok
@a0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.admitP@tok
Non_total_Typ_fun_1115))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasType (Prims.admitP @a0)
Prims.unit))
:pattern ((Prims.admitP @a0)))))
; </end encoding Prims.admitP>
; encoding sigelt Prims._assert
; <Start encoding Prims._assert>
(declare-fun Prims._assert (Type Term) Term)
(declare-fun Non_total_Typ_fun_1118 () Type)
(assert (HasKind Non_total_Typ_fun_1118
Kind_type))
;;;;;;;;;;;;;;;;pre-typing
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Non_total_Typ_fun_1118)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Non_total_Typ_fun_1118)))))
(declare-fun Prims._assert@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1120
(Term_constr_id Prims._assert@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims._assert@tok
@a0)
@x1)
(Prims._assert @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims._assert@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims._assert@tok
Non_total_Typ_fun_1118))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
Prims.unit))
(HasType (Prims._assert @a0
@x1)
Prims.unit))
:pattern ((Prims._assert @a0
@x1)))))
; </end encoding Prims._assert>
; encoding sigelt Prims.cut
; <Start encoding Prims.cut>
(declare-fun Prims.cut (Type) Term)
(declare-fun Non_total_Typ_fun_1121 () Type)
(assert (HasKind Non_total_Typ_fun_1121
Kind_type))
;;;;;;;;;;;;;;;;pre-typing
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Non_total_Typ_fun_1121)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Non_total_Typ_fun_1121)))))
(declare-fun Prims.cut@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1123
(Term_constr_id Prims.cut@tok)))
(assert (forall ((@a0 Type))
(! (= (ApplyET Prims.cut@tok
@a0)
(Prims.cut @a0))
:pattern ((ApplyET Prims.cut@tok
@a0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.cut@tok
Non_total_Typ_fun_1121))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasType (Prims.cut @a0)
Prims.unit))
:pattern ((Prims.cut @a0)))))
; </end encoding Prims.cut>
; encoding sigelt Prims.qintro
; <Start encoding Prims.qintro>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims.qintro (Type Type Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims.qintro@tok () Term)
; </end encoding Prims.qintro>
; encoding sigelt Prims.failwith
; <Start encoding Prims.failwith>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims.failwith (Type Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims.failwith@tok () Term)
; </end encoding Prims.failwith>
; encoding sigelt Prims.raise
; <Start encoding Prims.raise>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims.raise (Type Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims.raise@tok () Term)
; </end encoding Prims.raise>
; encoding sigelt Prims.pipe_right
; <Start encoding Prims.pipe_right>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims.pipe_right (Type Type Term Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims.pipe_right@tok () Term)
; </end encoding Prims.pipe_right>
; encoding sigelt Prims.pipe_left
; <Start encoding Prims.pipe_left>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims.pipe_left (Type Type Term Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims.pipe_left@tok () Term)
; </end encoding Prims.pipe_left>
; encoding sigelt Prims.ignore
; <Start encoding Prims.ignore>
(declare-fun Prims.ignore (Type Term) Term)
;;;;;;;;;;;;;;;;('a -> Tot unit)
(declare-fun Typ_fun_1131 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1131 kinding
(assert (HasKind Typ_fun_1131
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1131)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1131)))))
;;;;;;;;;;;;;;;;Typ_fun_1131 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1131)
(forall ((@a2 Type) (@x3 Term))
(! (implies (and (HasKind @a2
Kind_type)
(HasType @x3
@a2))
(HasType (ApplyEE (ApplyET @x1
@a2)
@x3)
Prims.unit))
:pattern ((ApplyEE (ApplyET @x1
@a2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1131)))))
(declare-fun Prims.ignore@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1134
(Term_constr_id Prims.ignore@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.ignore@tok
@a0)
@x1)
(Prims.ignore @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.ignore@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.ignore@tok
Typ_fun_1131))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
@a0))
(HasType (Prims.ignore @a0
@x1)
Prims.unit))
:pattern ((Prims.ignore @a0
@x1)))))
; </end encoding Prims.ignore>
; encoding sigelt let Prims.ignore : ('a -> Tot unit)
; <Start encoding Prims.ignore>
;;;;;;;;;;;;;;;;Equation for Prims.ignore
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
@a0))
(= (Prims.ignore @a0
@x1)
Term_unit))
:pattern ((Prims.ignore @a0
@x1)))))
; </end encoding Prims.ignore>
; encoding sigelt Prims.erase
; <Start encoding Prims.erase>
(declare-fun Prims.erase (Type Term) Term)
(declare-fun Prims.erase@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1136
(Term_constr_id Prims.erase@tok)))
(assert (forall ((@a0 Type) (@x1 Term))
(! (= (ApplyEE (ApplyET Prims.erase@tok
@a0)
@x1)
(Prims.erase @a0
@x1))
:pattern ((ApplyEE (ApplyET Prims.erase@tok
@a0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.erase@tok
Typ_fun_1131))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
@a0))
(HasType (Prims.erase @a0
@x1)
Prims.unit))
:pattern ((Prims.erase @a0
@x1)))))
; </end encoding Prims.erase>
; encoding sigelt let Prims.erase : ('a -> Tot unit)
; <Start encoding Prims.erase>
;;;;;;;;;;;;;;;;Equation for Prims.erase
(assert (forall ((@a0 Type) (@x1 Term))
(! (implies (and (HasKind @a0
Kind_type)
(HasType @x1
@a0))
(= (Prims.erase @a0
@x1)
Term_unit))
:pattern ((Prims.erase @a0
@x1)))))
; </end encoding Prims.erase>
; encoding sigelt Prims.exit
; <Start encoding Prims.exit>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims.exit (Type Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims.exit@tok () Term)
; </end encoding Prims.exit>
; encoding sigelt Prims.try_with
; <Start encoding Prims.try_with>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Prims.try_with (Type Term Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Prims.try_with@tok () Term)
; </end encoding Prims.try_with>
; encoding sigelt Prims.min
; <Start encoding Prims.min>
(declare-fun Prims.min (Term Term) Term)
;;;;;;;;;;;;;;;;(int -> int -> Tot int)
(declare-fun Typ_fun_1138 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1138 kinding
(assert (HasKind Typ_fun_1138
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1138)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1138)))))
;;;;;;;;;;;;;;;;Typ_fun_1138 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1138)
(forall ((@x2 Term) (@x3 Term))
(! (implies (and (HasType @x2
Prims.int)
(HasType @x3
Prims.int))
(HasType (ApplyEE (ApplyEE @x1
@x2)
@x3)
Prims.int))
:pattern ((ApplyEE (ApplyEE @x1
@x2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1138)))))
(declare-fun Prims.min@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1141
(Term_constr_id Prims.min@tok)))
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (ApplyEE (ApplyEE Prims.min@tok
@x0)
@x1)
(Prims.min @x0
@x1))
:pattern ((ApplyEE (ApplyEE Prims.min@tok
@x0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.min@tok
Typ_fun_1138))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term) (@x1 Term))
(! (implies (and (HasType @x0
Prims.int)
(HasType @x1
Prims.int))
(HasType (Prims.min @x0
@x1)
Prims.int))
:pattern ((Prims.min @x0
@x1)))))
; </end encoding Prims.min>
; encoding sigelt Prims.max
; <Start encoding Prims.max>
(declare-fun Prims.max (Term Term) Term)
(declare-fun Prims.max@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1143
(Term_constr_id Prims.max@tok)))
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (ApplyEE (ApplyEE Prims.max@tok
@x0)
@x1)
(Prims.max @x0
@x1))
:pattern ((ApplyEE (ApplyEE Prims.max@tok
@x0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Prims.max@tok
Typ_fun_1138))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term) (@x1 Term))
(! (implies (and (HasType @x0
Prims.int)
(HasType @x1
Prims.int))
(HasType (Prims.max @x0
@x1)
Prims.int))
:pattern ((Prims.max @x0
@x1)))))
; </end encoding Prims.max>
; encoding sigelt Prims.nat
; <Start encoding Prims.nat>
(declare-fun Prims.nat () Type)
(declare-fun Prims.nat@tok () Type)
;;;;;;;;;;;;;;;;name-token correspondence
(assert (= Prims.nat@tok
Prims.nat))
(declare-fun Typ_refine_1144 () Type)
(assert (HasKind Typ_refine_1144
Kind_type))
;;;;;;;;;;;;;;;;i:int{(i >= 0)}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1144)
(and (HasType @x1
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1144)))))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (= Prims.nat
Typ_refine_1144))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (HasKind Prims.nat
Kind_type))
; </end encoding Prims.nat>
; encoding sigelt Prims.pos
; <Start encoding Prims.pos>
(declare-fun Prims.pos () Type)
(declare-fun Prims.pos@tok () Type)
;;;;;;;;;;;;;;;;name-token correspondence
(assert (= Prims.pos@tok
Prims.pos))
(declare-fun Typ_refine_1146 () Type)
(assert (HasKind Typ_refine_1146
Kind_type))
;;;;;;;;;;;;;;;;i:int{(i > 0)}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1146)
(and (HasType @x1
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThan @x1
(BoxInt 0))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1146)))))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (= Prims.pos
Typ_refine_1146))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (HasKind Prims.pos
Kind_type))
; </end encoding Prims.pos>
; encoding sigelt Prims.nonzero
; <Start encoding Prims.nonzero>
(declare-fun Prims.nonzero () Type)
(declare-fun Prims.nonzero@tok () Type)
;;;;;;;;;;;;;;;;name-token correspondence
(assert (= Prims.nonzero@tok
Prims.nonzero))
(declare-fun Typ_refine_1148 () Type)
(assert (HasKind Typ_refine_1148
Kind_type))
;;;;;;;;;;;;;;;;i:int{(i <> 0)}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1148)
(and (HasType @x1
Prims.int)
(Valid (Prims.b2t (Prims.op_disEquality Prims.int
@x1
(BoxInt 0))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1148)))))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (= Prims.nonzero
Typ_refine_1148))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (HasKind Prims.nonzero
Kind_type))
; </end encoding Prims.nonzero>
; encoding sigelt Prims.op_Modulus
; <Start encoding Prims.op_Modulus>
(declare-fun Prims.op_Modulus (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_Modulus @x0
@x1)
(BoxInt (mod (BoxInt_proj_0 @x0)
(BoxInt_proj_0 @x1))))
:pattern ((Prims.op_Modulus @x0
@x1)))))
; </end encoding Prims.op_Modulus>
; encoding sigelt Prims.op_Division
; <Start encoding Prims.op_Division>
(declare-fun Prims.op_Division (Term Term) Term)
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Prims.op_Division @x0
@x1)
(BoxInt (div (BoxInt_proj_0 @x0)
(BoxInt_proj_0 @x1))))
:pattern ((Prims.op_Division @x0
@x1)))))
; </end encoding Prims.op_Division>
; encoding sigelt Prims.Boxed
; <Start encoding Prims.Boxed>
(declare-fun Prims.Boxed (Type) Type)
;;;;;;;;;;;;;;;;token
(declare-fun Prims.Boxed@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1151
(Type_constr_id Prims.Boxed@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@a0 Type))
(! (= (ApplyTT Prims.Boxed@tok
@a0)
(Prims.Boxed @a0))
:pattern ((ApplyTT Prims.Boxed@tok
@a0)))))
;;;;;;;;;;;;;;;;kinding
(assert (is-Kind_arrow (PreKind Prims.Boxed@tok)))
;;;;;;;;;;;;;;;;kinding
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasKind (Prims.Boxed @a0)
Kind_type))
:pattern ((Prims.Boxed @a0)))))
; </end encoding Prims.Boxed>
; Externals for module Classical
; <Skipped />
; <Start encoding Classical.excluded_middle>
(declare-fun Classical.excluded_middle (Type) Term)
(declare-fun Typ_refine_1166 (Type) Type)
(assert (forall ((@a0 Type))
(! (HasKind (Typ_refine_1166 @a0)
Kind_type)
:pattern ((HasKind (Typ_refine_1166 @a0)
Kind_type)))))
;;;;;;;;;;;;;;;;b:bool{((b = true) <==> p)}
(assert (forall ((@u0 Fuel) (@x1 Term) (@a2 Type))
(! (iff (HasType @x1
(Typ_refine_1166 @a2))
(and (HasType @x1
Prims.bool)
(iff (Valid (Prims.b2t (Prims.op_Equality Prims.bool
@x1
(BoxBool true))))
(Valid @a2))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1166 @a2))))))
;;;;;;;;;;;;;;;;(p:Type -> Tot b:bool{((b = true) <==> p)})
(declare-fun Typ_fun_1168 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1168 kinding
(assert (HasKind Typ_fun_1168
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1168)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1168)))))
;;;;;;;;;;;;;;;;Typ_fun_1168 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1168)
(forall ((@a2 Type))
(! (implies (HasKind @a2
Kind_type)
(HasType (ApplyET @x1
@a2)
(Typ_refine_1166 @a2)))
:pattern ((ApplyET @x1
@a2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1168)))))
(declare-fun Classical.excluded_middle@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1171
(Term_constr_id Classical.excluded_middle@tok)))
(assert (forall ((@a0 Type))
(! (= (ApplyET Classical.excluded_middle@tok
@a0)
(Classical.excluded_middle @a0))
:pattern ((ApplyET Classical.excluded_middle@tok
@a0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Classical.excluded_middle@tok
Typ_fun_1168))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@a0 Type))
(! (implies (HasKind @a0
Kind_type)
(HasType (Classical.excluded_middle @a0)
(Typ_refine_1166 @a0)))
:pattern ((Classical.excluded_middle @a0)))))
; </end encoding Classical.excluded_middle>
; <Start encoding Classical.forall_intro>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Classical.forall_intro (Type Type Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Classical.forall_intro@tok () Term)
; </end encoding Classical.forall_intro>
; <Start encoding Classical.give_proof>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Classical.give_proof (Type Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Classical.give_proof@tok () Term)
; </end encoding Classical.give_proof>
; End Externals for module Classical
(push)
; Internals for module Test
(push)
; Recursive bindings: Test.exp, Test.EVar, Test.EApp, Test.ELam
; encoding sigelt Test.exp
; <Start encoding Test.exp>
; <start constructor Test.exp>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Test.exp () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 1172
(Type_constr_id Test.exp)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Test.exp ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
1172)
(= @a0
Test.exp)))
; </end constructor Test.exp>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Test.exp
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Test.exp)
(= Test.exp
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Test.exp)))))
; </end encoding Test.exp>
; encoding sigelt Test.EVar
; <Start encoding Test.EVar>
; <start constructor Test.EVar>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Test.EVar (Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@x0 Term))
(= 1176
(Term_constr_id (Test.EVar @x0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Test.EVar__0 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term))
(! (= (Test.EVar__0 (Test.EVar @x0))
@x0)
:pattern ((Test.EVar @x0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Test.EVar ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
1176)
(= @x0
(Test.EVar (Test.EVar__0 @x0)))))
; </end constructor Test.EVar>
;;;;;;;;;;;;;;;;(_0:nat -> Tot exp)
(declare-fun Typ_fun_1178 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1178 kinding
(assert (HasKind Typ_fun_1178
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1178)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1178)))))
;;;;;;;;;;;;;;;;Typ_fun_1178 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1178)
(forall ((@x2 Term))
(! (implies (HasType @x2
Prims.nat@tok)
(HasType (ApplyEE @x1
@x2)
Test.exp))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1178)))))
;;;;;;;;;;;;;;;;data constructor proxy: EVar
(declare-fun Test.EVar@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1181
(Term_constr_id Test.EVar@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Test.EVar@tok
Typ_fun_1178))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.EVar@tok
@x0)
(Test.EVar @x0))
:pattern ((ApplyEE Test.EVar@tok
@x0)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
Prims.nat@tok)
(HasTypeFuel @u0
(Test.EVar @x1)
Test.exp))
:pattern ((HasTypeFuel @u0
(Test.EVar @x1)
Test.exp)))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.EVar @x1)
Test.exp)
(HasTypeFuel @u0
@x1
Prims.nat@tok))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.EVar @x1)
Test.exp)))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.EVar @x1)
Test.exp)
(Valid (Precedes @x1
(Test.EVar @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.EVar @x1)
Test.exp)))))
; </end encoding Test.EVar>
; encoding sigelt Test.EApp
; <Start encoding Test.EApp>
; <start constructor Test.EApp>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Test.EApp (Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@x0 Term) (@x1 Term))
(= 1183
(Term_constr_id (Test.EApp @x0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Test.EApp__0 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Test.EApp__0 (Test.EApp @x0
@x1))
@x0)
:pattern ((Test.EApp @x0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Test.EApp__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Test.EApp__1 (Test.EApp @x0
@x1))
@x1)
:pattern ((Test.EApp @x0
@x1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Test.EApp ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
1183)
(= @x0
(Test.EApp (Test.EApp__0 @x0)
(Test.EApp__1 @x0)))))
; </end constructor Test.EApp>
;;;;;;;;;;;;;;;;(_0:exp -> _1:exp -> Tot exp)
(declare-fun Typ_fun_1185 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1185 kinding
(assert (HasKind Typ_fun_1185
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1185)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1185)))))
;;;;;;;;;;;;;;;;Typ_fun_1185 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1185)
(forall ((@x2 Term) (@x3 Term))
(! (implies (and (HasType @x2
Test.exp)
(HasType @x3
Test.exp))
(HasType (ApplyEE (ApplyEE @x1
@x2)
@x3)
Test.exp))
:pattern ((ApplyEE (ApplyEE @x1
@x2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1185)))))
;;;;;;;;;;;;;;;;data constructor proxy: EApp
(declare-fun Test.EApp@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1188
(Term_constr_id Test.EApp@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Test.EApp@tok
Typ_fun_1185))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (ApplyEE (ApplyEE Test.EApp@tok
@x0)
@x1)
(Test.EApp @x0
@x1))
:pattern ((ApplyEE (ApplyEE Test.EApp@tok
@x0)
@x1)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (implies (and (HasTypeFuel (SFuel @u0)
@x1
Test.exp)
(HasTypeFuel (SFuel @u0)
@x2
Test.exp))
(HasTypeFuel @u0
(Test.EApp @x1
@x2)
Test.exp))
:pattern ((HasTypeFuel @u0
(Test.EApp @x1
@x2)
Test.exp)))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.EApp @x1
@x2)
Test.exp)
(and (HasTypeFuel @u0
@x1
Test.exp)
(HasTypeFuel @u0
@x2
Test.exp)))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.EApp @x1
@x2)
Test.exp)))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.EApp @x1
@x2)
Test.exp)
(and (Valid (Precedes @x1
(Test.EApp @x1
@x2)))
(Valid (Precedes @x2
(Test.EApp @x1
@x2)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.EApp @x1
@x2)
Test.exp)))))
; </end encoding Test.EApp>
; encoding sigelt Test.ELam
; <Start encoding Test.ELam>
; <start constructor Test.ELam>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Test.ELam (Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@x0 Term))
(= 1190
(Term_constr_id (Test.ELam @x0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Test.ELam__0 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term))
(! (= (Test.ELam__0 (Test.ELam @x0))
@x0)
:pattern ((Test.ELam @x0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Test.ELam ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
1190)
(= @x0
(Test.ELam (Test.ELam__0 @x0)))))
; </end constructor Test.ELam>
;;;;;;;;;;;;;;;;(_0:exp -> Tot exp)
(declare-fun Typ_fun_1192 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1192 kinding
(assert (HasKind Typ_fun_1192
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1192)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1192)))))
;;;;;;;;;;;;;;;;Typ_fun_1192 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1192)
(forall ((@x2 Term))
(! (implies (HasType @x2
Test.exp)
(HasType (ApplyEE @x1
@x2)
Test.exp))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1192)))))
;;;;;;;;;;;;;;;;data constructor proxy: ELam
(declare-fun Test.ELam@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1195
(Term_constr_id Test.ELam@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Test.ELam@tok
Typ_fun_1192))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.ELam@tok
@x0)
(Test.ELam @x0))
:pattern ((ApplyEE Test.ELam@tok
@x0)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
Test.exp)
(HasTypeFuel @u0
(Test.ELam @x1)
Test.exp))
:pattern ((HasTypeFuel @u0
(Test.ELam @x1)
Test.exp)))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.ELam @x1)
Test.exp)
(HasTypeFuel @u0
@x1
Test.exp))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.ELam @x1)
Test.exp)))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.ELam @x1)
Test.exp)
(Valid (Precedes @x1
(Test.ELam @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.ELam @x1)
Test.exp)))))
; </end encoding Test.ELam>
(pop)
; Recursive bindings: Test.exp, Test.EVar, Test.EApp, Test.ELam
; encoding sigelt Test.exp, Test.EVar, Test.EApp, Test.ELam
; <Start encoding >
; <Start encoding Test.exp>
; <start constructor Test.exp>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Test.exp () Type)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (= 1196
(Type_constr_id Test.exp)))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Test.exp ((@a0 Type)) Bool
(and (= (Type_constr_id @a0)
1196)
(= @a0
Test.exp)))
; </end constructor Test.exp>
;;;;;;;;;;;;;;;;kinding
(assert (HasKind Test.exp
Kind_type))
;;;;;;;;;;;;;;;;pretyping
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (implies (HasTypeFuel @u1
@x0
Test.exp)
(= Test.exp
(PreType @x0)))
:pattern ((HasTypeFuel @u1
@x0
Test.exp)))))
; </end encoding Test.exp>
; <Start encoding Test.EVar>
; <start constructor Test.EVar>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Test.EVar (Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@x0 Term))
(= 1202
(Term_constr_id (Test.EVar @x0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Test.EVar__0 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term))
(! (= (Test.EVar__0 (Test.EVar @x0))
@x0)
:pattern ((Test.EVar @x0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Test.EVar ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
1202)
(= @x0
(Test.EVar (Test.EVar__0 @x0)))))
; </end constructor Test.EVar>
;;;;;;;;;;;;;;;;(_0:nat -> Tot exp)
(declare-fun Typ_fun_1204 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1204 kinding
(assert (HasKind Typ_fun_1204
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1204)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1204)))))
;;;;;;;;;;;;;;;;Typ_fun_1204 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1204)
(forall ((@x2 Term))
(! (implies (HasType @x2
Prims.nat@tok)
(HasType (ApplyEE @x1
@x2)
Test.exp))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1204)))))
;;;;;;;;;;;;;;;;data constructor proxy: EVar
(declare-fun Test.EVar@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1207
(Term_constr_id Test.EVar@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Test.EVar@tok
Typ_fun_1204))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.EVar@tok
@x0)
(Test.EVar @x0))
:pattern ((ApplyEE Test.EVar@tok
@x0)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
Prims.nat@tok)
(HasTypeFuel @u0
(Test.EVar @x1)
Test.exp))
:pattern ((HasTypeFuel @u0
(Test.EVar @x1)
Test.exp)))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.EVar @x1)
Test.exp)
(HasTypeFuel @u0
@x1
Prims.nat@tok))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.EVar @x1)
Test.exp)))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.EVar @x1)
Test.exp)
(Valid (Precedes @x1
(Test.EVar @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.EVar @x1)
Test.exp)))))
; </end encoding Test.EVar>
; <Start encoding Test.EApp>
; <start constructor Test.EApp>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Test.EApp (Term Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@x0 Term) (@x1 Term))
(= 1209
(Term_constr_id (Test.EApp @x0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Test.EApp__0 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Test.EApp__0 (Test.EApp @x0
@x1))
@x0)
:pattern ((Test.EApp @x0
@x1)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Test.EApp__1 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Test.EApp__1 (Test.EApp @x0
@x1))
@x1)
:pattern ((Test.EApp @x0
@x1)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Test.EApp ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
1209)
(= @x0
(Test.EApp (Test.EApp__0 @x0)
(Test.EApp__1 @x0)))))
; </end constructor Test.EApp>
;;;;;;;;;;;;;;;;(_0:exp -> _1:exp -> Tot exp)
(declare-fun Typ_fun_1211 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1211 kinding
(assert (HasKind Typ_fun_1211
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1211)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1211)))))
;;;;;;;;;;;;;;;;Typ_fun_1211 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1211)
(forall ((@x2 Term) (@x3 Term))
(! (implies (and (HasType @x2
Test.exp)
(HasType @x3
Test.exp))
(HasType (ApplyEE (ApplyEE @x1
@x2)
@x3)
Test.exp))
:pattern ((ApplyEE (ApplyEE @x1
@x2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1211)))))
;;;;;;;;;;;;;;;;data constructor proxy: EApp
(declare-fun Test.EApp@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1214
(Term_constr_id Test.EApp@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Test.EApp@tok
Typ_fun_1211))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (ApplyEE (ApplyEE Test.EApp@tok
@x0)
@x1)
(Test.EApp @x0
@x1))
:pattern ((ApplyEE (ApplyEE Test.EApp@tok
@x0)
@x1)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (implies (and (HasTypeFuel (SFuel @u0)
@x1
Test.exp)
(HasTypeFuel (SFuel @u0)
@x2
Test.exp))
(HasTypeFuel @u0
(Test.EApp @x1
@x2)
Test.exp))
:pattern ((HasTypeFuel @u0
(Test.EApp @x1
@x2)
Test.exp)))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.EApp @x1
@x2)
Test.exp)
(and (HasTypeFuel @u0
@x1
Test.exp)
(HasTypeFuel @u0
@x2
Test.exp)))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.EApp @x1
@x2)
Test.exp)))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.EApp @x1
@x2)
Test.exp)
(and (Valid (Precedes @x1
(Test.EApp @x1
@x2)))
(Valid (Precedes @x2
(Test.EApp @x1
@x2)))))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.EApp @x1
@x2)
Test.exp)))))
; </end encoding Test.EApp>
; <Start encoding Test.ELam>
; <start constructor Test.ELam>
;;;;;;;;;;;;;;;;Constructor
(declare-fun Test.ELam (Term) Term)
;;;;;;;;;;;;;;;;Constructor distinct
(assert (forall ((@x0 Term))
(= 1216
(Term_constr_id (Test.ELam @x0)))))
;;;;;;;;;;;;;;;;Projector
(declare-fun Test.ELam__0 (Term) Term)
;;;;;;;;;;;;;;;;Projection inverse
(assert (forall ((@x0 Term))
(! (= (Test.ELam__0 (Test.ELam @x0))
@x0)
:pattern ((Test.ELam @x0)))))
;;;;;;;;;;;;;;;;Discriminator definition
(define-fun is-Test.ELam ((@x0 Term)) Bool
(and (= (Term_constr_id @x0)
1216)
(= @x0
(Test.ELam (Test.ELam__0 @x0)))))
; </end constructor Test.ELam>
;;;;;;;;;;;;;;;;(_0:exp -> Tot exp)
(declare-fun Typ_fun_1218 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1218 kinding
(assert (HasKind Typ_fun_1218
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1218)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1218)))))
;;;;;;;;;;;;;;;;Typ_fun_1218 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1218)
(forall ((@x2 Term))
(! (implies (HasType @x2
Test.exp)
(HasType (ApplyEE @x1
@x2)
Test.exp))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1218)))))
;;;;;;;;;;;;;;;;data constructor proxy: ELam
(declare-fun Test.ELam@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1221
(Term_constr_id Test.ELam@tok)))
;;;;;;;;;;;;;;;;typing for data constructor proxy
(assert (HasType Test.ELam@tok
Typ_fun_1218))
;;;;;;;;;;;;;;;;equality for proxy
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.ELam@tok
@x0)
(Test.ELam @x0))
:pattern ((ApplyEE Test.ELam@tok
@x0)))))
;;;;;;;;;;;;;;;;data constructor typing intro
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
Test.exp)
(HasTypeFuel @u0
(Test.ELam @x1)
Test.exp))
:pattern ((HasTypeFuel @u0
(Test.ELam @x1)
Test.exp)))))
;;;;;;;;;;;;;;;;data constructor typing elim
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.ELam @x1)
Test.exp)
(HasTypeFuel @u0
@x1
Test.exp))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.ELam @x1)
Test.exp)))))
;;;;;;;;;;;;;;;;subterm ordering
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
(Test.ELam @x1)
Test.exp)
(Valid (Precedes @x1
(Test.ELam @x1))))
:pattern ((HasTypeFuel (SFuel @u0)
(Test.ELam @x1)
Test.exp)))))
; </end encoding Test.ELam>
;;;;;;;;;;;;;;;;inversion axiom
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasTypeFuel (SFuel @u0)
@x1
Test.exp)
(or (is-Test.EVar @x1)
(is-Test.EApp @x1)
(is-Test.ELam @x1)))
:pattern ((HasTypeFuel (SFuel @u0)
@x1
Test.exp)))))
; </end encoding >
; encoding sigelt Test.is_EVar
; <Start encoding Test.is_EVar>
(declare-fun Test.is_EVar (Term) Term)
;;;;;;;;;;;;;;;;(exp -> Tot bool)
(declare-fun Typ_fun_1223 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1223 kinding
(assert (HasKind Typ_fun_1223
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1223)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1223)))))
;;;;;;;;;;;;;;;;Typ_fun_1223 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1223)
(forall ((@x2 Term))
(! (implies (HasType @x2
Test.exp)
(HasType (ApplyEE @x1
@x2)
Prims.bool))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1223)))))
(declare-fun Test.is_EVar@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1226
(Term_constr_id Test.is_EVar@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.is_EVar@tok
@x0)
(Test.is_EVar @x0))
:pattern ((ApplyEE Test.is_EVar@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.is_EVar@tok
Typ_fun_1223))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.exp)
(HasType (Test.is_EVar @x0)
Prims.bool))
:pattern ((Test.is_EVar @x0)))))
(assert (forall ((@x0 Term))
(! (= (Test.is_EVar @x0)
(BoxBool (is-Test.EVar @x0)))
:pattern ((Test.is_EVar @x0)))))
; </end encoding Test.is_EVar>
; encoding sigelt Test.is_EApp
; <Start encoding Test.is_EApp>
(declare-fun Test.is_EApp (Term) Term)
(declare-fun Test.is_EApp@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1228
(Term_constr_id Test.is_EApp@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.is_EApp@tok
@x0)
(Test.is_EApp @x0))
:pattern ((ApplyEE Test.is_EApp@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.is_EApp@tok
Typ_fun_1223))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.exp)
(HasType (Test.is_EApp @x0)
Prims.bool))
:pattern ((Test.is_EApp @x0)))))
(assert (forall ((@x0 Term))
(! (= (Test.is_EApp @x0)
(BoxBool (is-Test.EApp @x0)))
:pattern ((Test.is_EApp @x0)))))
; </end encoding Test.is_EApp>
; encoding sigelt Test.is_ELam
; <Start encoding Test.is_ELam>
(declare-fun Test.is_ELam (Term) Term)
(declare-fun Test.is_ELam@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1230
(Term_constr_id Test.is_ELam@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.is_ELam@tok
@x0)
(Test.is_ELam @x0))
:pattern ((ApplyEE Test.is_ELam@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.is_ELam@tok
Typ_fun_1223))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.exp)
(HasType (Test.is_ELam @x0)
Prims.bool))
:pattern ((Test.is_ELam @x0)))))
(assert (forall ((@x0 Term))
(! (= (Test.is_ELam @x0)
(BoxBool (is-Test.ELam @x0)))
:pattern ((Test.is_ELam @x0)))))
; </end encoding Test.is_ELam>
(push)
; Starting query at bug281.fst(14,2-14,6)
(pop)
; Ending query at bug281.fst(14,2-14,6)
; encoding sigelt Test.EVar._0
; <Start encoding Test.EVar._0>
(declare-fun Typ_refine_1231 () Type)
(assert (HasKind Typ_refine_1231
Kind_type))
;;;;;;;;;;;;;;;;_2_2:exp{(is_EVar _2_2)}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1231)
(and (HasType @x1
Test.exp)
(Valid (Prims.b2t (Test.is_EVar @x1)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1231)))))
(declare-fun Test.EVar._0 (Term) Term)
;;;;;;;;;;;;;;;;(projectee:_2_2:exp{(is_EVar _2_2)} -> Tot nat)
(declare-fun Typ_fun_1234 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1234 kinding
(assert (HasKind Typ_fun_1234
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1234)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1234)))))
;;;;;;;;;;;;;;;;Typ_fun_1234 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1234)
(forall ((@x2 Term))
(! (implies (HasType @x2
Typ_refine_1231)
(HasType (ApplyEE @x1
@x2)
Prims.nat@tok))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1234)))))
(declare-fun Test.EVar._0@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1237
(Term_constr_id Test.EVar._0@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.EVar._0@tok
@x0)
(Test.EVar._0 @x0))
:pattern ((ApplyEE Test.EVar._0@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.EVar._0@tok
Typ_fun_1234))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_1231)
(HasType (Test.EVar._0 @x0)
Prims.nat@tok))
:pattern ((Test.EVar._0 @x0)))))
(assert (forall ((@x0 Term))
(! (= (Test.EVar._0 @x0)
(Test.EVar__0 @x0))
:pattern ((Test.EVar._0 @x0)))))
; </end encoding Test.EVar._0>
(push)
; Starting query at bug281.fst(14,2-14,6)
(pop)
; Ending query at bug281.fst(14,2-14,6)
; encoding sigelt Test.EApp._0
; <Start encoding Test.EApp._0>
(declare-fun Typ_refine_1238 () Type)
(assert (HasKind Typ_refine_1238
Kind_type))
;;;;;;;;;;;;;;;;_2_4:exp{(is_EApp _2_4)}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1238)
(and (HasType @x1
Test.exp)
(Valid (Prims.b2t (Test.is_EApp @x1)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1238)))))
(declare-fun Test.EApp._0 (Term) Term)
;;;;;;;;;;;;;;;;(projectee:_2_4:exp{(is_EApp _2_4)} -> Tot exp)
(declare-fun Typ_fun_1241 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1241 kinding
(assert (HasKind Typ_fun_1241
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1241)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1241)))))
;;;;;;;;;;;;;;;;Typ_fun_1241 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1241)
(forall ((@x2 Term))
(! (implies (HasType @x2
Typ_refine_1238)
(HasType (ApplyEE @x1
@x2)
Test.exp))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1241)))))
(declare-fun Test.EApp._0@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1244
(Term_constr_id Test.EApp._0@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.EApp._0@tok
@x0)
(Test.EApp._0 @x0))
:pattern ((ApplyEE Test.EApp._0@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.EApp._0@tok
Typ_fun_1241))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_1238)
(HasType (Test.EApp._0 @x0)
Test.exp))
:pattern ((Test.EApp._0 @x0)))))
(assert (forall ((@x0 Term))
(! (= (Test.EApp._0 @x0)
(Test.EApp__0 @x0))
:pattern ((Test.EApp._0 @x0)))))
; </end encoding Test.EApp._0>
(push)
; Starting query at bug281.fst(14,2-14,6)
(pop)
; Ending query at bug281.fst(14,2-14,6)
; encoding sigelt Test.EApp._1
; <Start encoding Test.EApp._1>
(declare-fun Test.EApp._1 (Term) Term)
(declare-fun Test.EApp._1@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1246
(Term_constr_id Test.EApp._1@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.EApp._1@tok
@x0)
(Test.EApp._1 @x0))
:pattern ((ApplyEE Test.EApp._1@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.EApp._1@tok
Typ_fun_1241))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_1238)
(HasType (Test.EApp._1 @x0)
Test.exp))
:pattern ((Test.EApp._1 @x0)))))
(assert (forall ((@x0 Term))
(! (= (Test.EApp._1 @x0)
(Test.EApp__1 @x0))
:pattern ((Test.EApp._1 @x0)))))
; </end encoding Test.EApp._1>
(push)
; Starting query at bug281.fst(14,2-14,6)
(pop)
; Ending query at bug281.fst(14,2-14,6)
; encoding sigelt Test.ELam._0
; <Start encoding Test.ELam._0>
(declare-fun Typ_refine_1247 () Type)
(assert (HasKind Typ_refine_1247
Kind_type))
;;;;;;;;;;;;;;;;_2_6:exp{(is_ELam _2_6)}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1247)
(and (HasType @x1
Test.exp)
(Valid (Prims.b2t (Test.is_ELam @x1)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1247)))))
(declare-fun Test.ELam._0 (Term) Term)
;;;;;;;;;;;;;;;;(projectee:_2_6:exp{(is_ELam _2_6)} -> Tot exp)
(declare-fun Typ_fun_1250 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1250 kinding
(assert (HasKind Typ_fun_1250
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1250)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1250)))))
;;;;;;;;;;;;;;;;Typ_fun_1250 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1250)
(forall ((@x2 Term))
(! (implies (HasType @x2
Typ_refine_1247)
(HasType (ApplyEE @x1
@x2)
Test.exp))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1250)))))
(declare-fun Test.ELam._0@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1253
(Term_constr_id Test.ELam._0@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.ELam._0@tok
@x0)
(Test.ELam._0 @x0))
:pattern ((ApplyEE Test.ELam._0@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.ELam._0@tok
Typ_fun_1250))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_1247)
(HasType (Test.ELam._0 @x0)
Test.exp))
:pattern ((Test.ELam._0 @x0)))))
(assert (forall ((@x0 Term))
(! (= (Test.ELam._0 @x0)
(Test.ELam__0 @x0))
:pattern ((Test.ELam._0 @x0)))))
; </end encoding Test.ELam._0>
; encoding sigelt Test.sub
; <Start encoding Test.sub>
(declare-fun Test.sub () Type)
(declare-fun Test.sub@tok () Type)
;;;;;;;;;;;;;;;;name-token correspondence
(assert (= Test.sub@tok
Test.sub))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (= Test.sub
Typ_fun_1204))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (HasKind Test.sub
Kind_type))
; </end encoding Test.sub>
(push)
; Starting query at bug281.fst(16,27-18,49)
(pop)
; Ending query at bug281.fst(16,27-18,49)
; encoding sigelt Test.renaming
; <Start encoding Test.renaming>
(declare-fun Test.renaming (Term) Type)
(declare-fun Test.renaming@tok () Type)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1259
(Type_constr_id Test.renaming@tok)))
;;;;;;;;;;;;;;;;name-token correspondence
(assert (forall ((@x0 Term))
(! (= (ApplyTE Test.renaming@tok
@x0)
(Test.renaming @x0))
:pattern ((ApplyTE Test.renaming@tok
@x0)))))
;;;;;;;;;;;;;;;;abbrev. elimination
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.sub@tok)
(= (Valid (Test.renaming @x0))
(forall ((@x1 Term))
(implies (HasType @x1
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x0
@x1))))))))
:pattern ((Valid (Test.renaming @x0))))))
;;;;;;;;;;;;;;;;abbrev. kinding
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.sub@tok)
(HasKind (Test.renaming @x0)
Kind_type))
:pattern ((Test.renaming @x0)))))
; </end encoding Test.renaming>
; encoding sigelt Test.is_renaming
; <Start encoding Test.is_renaming>
(declare-fun Test.is_renaming (Term) Term)
;;;;;;;;;;;;;;;;(s:sub -> Tot nat)
(declare-fun Typ_fun_1261 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1261 kinding
(assert (HasKind Typ_fun_1261
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1261)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1261)))))
;;;;;;;;;;;;;;;;Typ_fun_1261 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1261)
(forall ((@x2 Term))
(! (implies (HasType @x2
Test.sub@tok)
(HasType (ApplyEE @x1
@x2)
Prims.nat@tok))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1261)))))
(declare-fun Test.is_renaming@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1264
(Term_constr_id Test.is_renaming@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.is_renaming@tok
@x0)
(Test.is_renaming @x0))
:pattern ((ApplyEE Test.is_renaming@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.is_renaming@tok
Typ_fun_1261))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.sub@tok)
(HasType (Test.is_renaming @x0)
Prims.nat@tok))
:pattern ((Test.is_renaming @x0)))))
; </end encoding Test.is_renaming>
(push)
; Starting query at bug281.fst(21,0-22,49)
;;;;;;;;;;;;;;;;s : sub ((i:int{(i >= 0)} -> Tot exp))
(declare-fun s___2_10 () Term)
;;;;;;;;;;;;;;;;(i:int{(i >= 0)} -> Tot exp)
(declare-fun Typ_fun_1266 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1266 kinding
(assert (HasKind Typ_fun_1266
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1266)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1266)))))
;;;;;;;;;;;;;;;;Typ_fun_1266 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1266)
(forall ((@x2 Term))
(! (implies (HasType @x2
Typ_refine_1144)
(HasType (ApplyEE @x1
@x2)
Test.exp))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1266)))))
(assert (HasType s___2_10
Typ_fun_1266))
(declare-fun label_1270 () Bool)
(declare-fun label_1271 () Bool)
(declare-fun label_1272 () Bool)
(declare-fun Typ_lam_1269 () Type)
;;;;;;;;;;;;;;;;Typ_lam interpretation
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_1144)
(= (ApplyTE Typ_lam_1269
@x0)
(Prims.b2t (Test.is_EVar (ApplyEE s___2_10
@x0)))))
:pattern ((ApplyTE Typ_lam_1269
@x0)))))
;;;;;;;;;;;;;;;;Typ_lam kinding
(assert (and (is-Kind_arrow (PreKind Typ_lam_1269))
(forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_1144)
(HasKind (ApplyTE Typ_lam_1269
@x0)
Kind_type))
:pattern ((ApplyTE Typ_lam_1269
@x0))))))
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (ite (= (Classical.excluded_middle (Prims.Forall Typ_refine_1144
Typ_lam_1269))
(BoxBool true))
(or label_1270
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (BoxInt 0)
(BoxInt 0)))))
(ite (= (Classical.excluded_middle (Prims.Forall Typ_refine_1144
Typ_lam_1269))
(BoxBool false))
(or label_1271
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (BoxInt 1)
(BoxInt 0)))))
label_1272))))
(check-sat)
(echo "label_1270")
(eval label_1270)
(echo "label_1271")
(eval label_1271)
(echo "label_1272")
(eval label_1272)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(21,0-22,49)
; encoding sigelt let Test.is_renaming : (s:sub -> Tot nat)
; <Start encoding Test.is_renaming>
;;;;;;;;;;;;;;;;Equation for Test.is_renaming
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.sub@tok)
(= (Test.is_renaming @x0)
(ite (= (Classical.excluded_middle (Test.renaming @x0))
(BoxBool true))
(BoxInt 0)
(ite (= (Classical.excluded_middle (Test.renaming @x0))
(BoxBool false))
(BoxInt 1)
Term_unit))))
:pattern ((Test.is_renaming @x0)))))
; </end encoding Test.is_renaming>
; encoding sigelt Test.is_evar
; <Start encoding Test.is_evar>
(declare-fun Test.is_evar (Term) Term)
;;;;;;;;;;;;;;;;(exp -> Tot nat)
(declare-fun Typ_fun_1274 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1274 kinding
(assert (HasKind Typ_fun_1274
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1274)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1274)))))
;;;;;;;;;;;;;;;;Typ_fun_1274 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1274)
(forall ((@x2 Term))
(! (implies (HasType @x2
Test.exp)
(HasType (ApplyEE @x1
@x2)
Prims.nat@tok))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1274)))))
(declare-fun Test.is_evar@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1277
(Term_constr_id Test.is_evar@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.is_evar@tok
@x0)
(Test.is_evar @x0))
:pattern ((ApplyEE Test.is_evar@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.is_evar@tok
Typ_fun_1274))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.exp)
(HasType (Test.is_evar @x0)
Prims.nat@tok))
:pattern ((Test.is_evar @x0)))))
; </end encoding Test.is_evar>
(push)
; Starting query at bug281.fst(25,0-25,44)
;;;;;;;;;;;;;;;;e : exp (exp)
(declare-fun e___2_11 () Term)
(assert (HasType e___2_11
Test.exp))
(declare-fun label_1278 () Bool)
(declare-fun label_1279 () Bool)
(declare-fun label_1280 () Bool)
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (ite (= (Test.is_EVar e___2_11)
(BoxBool true))
(or label_1278
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (BoxInt 0)
(BoxInt 0)))))
(ite (= (Test.is_EVar e___2_11)
(BoxBool false))
(or label_1279
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (BoxInt 1)
(BoxInt 0)))))
label_1280))))
(check-sat)
(echo "label_1278")
(eval label_1278)
(echo "label_1279")
(eval label_1279)
(echo "label_1280")
(eval label_1280)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(25,0-25,44)
; encoding sigelt let Test.is_evar : (exp -> Tot nat)
; <Start encoding Test.is_evar>
;;;;;;;;;;;;;;;;Equation for Test.is_evar
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.exp)
(= (Test.is_evar @x0)
(ite (= (Test.is_EVar @x0)
(BoxBool true))
(BoxInt 0)
(ite (= (Test.is_EVar @x0)
(BoxBool false))
(BoxInt 1)
Term_unit))))
:pattern ((Test.is_evar @x0)))))
; </end encoding Test.is_evar>
; encoding sigelt Test.sub_einc
; <Start encoding Test.sub_einc>
(declare-fun Test.sub_einc (Term) Term)
(declare-fun Test.sub_einc@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1282
(Term_constr_id Test.sub_einc@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.sub_einc@tok
@x0)
(Test.sub_einc @x0))
:pattern ((ApplyEE Test.sub_einc@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.sub_einc@tok
Typ_fun_1204))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Prims.nat@tok)
(HasType (Test.sub_einc @x0)
Test.exp))
:pattern ((Test.sub_einc @x0)))))
; </end encoding Test.sub_einc>
(push)
; Starting query at bug281.fst(28,0-28,27)
;;;;;;;;;;;;;;;;x : nat (i:int{(i >= 0)})
(declare-fun x___2_12 () Term)
(assert (HasType x___2_12
Typ_refine_1144))
(declare-fun label_1283 () Bool)
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (or label_1283
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (Prims.op_Addition x___2_12
(BoxInt 1))
(BoxInt 0)))))))
(check-sat)
(echo "label_1283")
(eval label_1283)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(28,0-28,27)
; encoding sigelt let Test.sub_einc : (nat -> Tot exp)
; <Start encoding Test.sub_einc>
;;;;;;;;;;;;;;;;Equation for Test.sub_einc
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Prims.nat@tok)
(= (Test.sub_einc @x0)
(Test.EVar (Prims.op_Addition @x0
(BoxInt 1)))))
:pattern ((Test.sub_einc @x0)))))
; </end encoding Test.sub_einc>
(push)
; Starting query at bug281.fst(28,27-31,44)
(pop)
; Ending query at bug281.fst(28,27-31,44)
; encoding sigelt Test.esubst
; <Start encoding Test.esubst>
(declare-fun Test.esubst (Term Term) Term)
(declare-fun Typ_refine_1289 (Term Term) Type)
(assert (forall ((@x0 Term) (@x1 Term))
(! (HasKind (Typ_refine_1289 @x0
@x1)
Kind_type)
:pattern ((HasKind (Typ_refine_1289 @x0
@x1)
Kind_type)))))
;;;;;;;;;;;;;;;;r:exp{(((renaming s) /\ (is_EVar e)) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term) (@x3 Term))
(! (iff (HasType @x1
(Typ_refine_1289 @x2
@x3))
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x4 Term))
(implies (HasType @x4
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x3
@x4))))))
(Valid (Prims.b2t (Test.is_EVar @x2))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1289 @x2
@x3))))))
;;;;;;;;;;;;;;;;(s:sub -> e:exp -> Tot r:exp{(((renaming s) /\ (is_EVar e)) ==> (is_EVar r))} (decreases %[(is_evar e); (is_renaming s); 1; e]))
(declare-fun Typ_fun_1291 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1291 kinding
(assert (HasKind Typ_fun_1291
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1291)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1291)))))
;;;;;;;;;;;;;;;;Typ_fun_1291 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1291)
(forall ((@x2 Term) (@x3 Term))
(! (implies (and (HasType @x2
Test.sub@tok)
(HasType @x3
Test.exp))
(HasType (ApplyEE (ApplyEE @x1
@x2)
@x3)
(Typ_refine_1289 @x3
@x2)))
:pattern ((ApplyEE (ApplyEE @x1
@x2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1291)))))
(declare-fun Test.esubst@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1294
(Term_constr_id Test.esubst@tok)))
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (ApplyEE (ApplyEE Test.esubst@tok
@x0)
@x1)
(Test.esubst @x0
@x1))
:pattern ((ApplyEE (ApplyEE Test.esubst@tok
@x0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.esubst@tok
Typ_fun_1291))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term) (@x1 Term))
(! (implies (and (HasType @x0
Test.sub@tok)
(HasType @x1
Test.exp))
(HasType (Test.esubst @x0
@x1)
(Typ_refine_1289 @x1
@x0)))
:pattern ((Test.esubst @x0
@x1)))))
; </end encoding Test.esubst>
(push)
; Starting query at bug281.fst(31,44-33,41)
(declare-fun label_1299 () Bool)
;;;;;;;;;;;;;;;;(i:int{(i >= 0)} -> Tot exp)
(declare-fun Typ_fun_1296 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1296 kinding
(assert (HasKind Typ_fun_1296
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1296)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1296)))))
;;;;;;;;;;;;;;;;Typ_fun_1296 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1296)
(forall ((@x2 Term))
(! (implies (HasType @x2
Typ_refine_1144)
(HasType (ApplyEE @x1
@x2)
Test.exp))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1296)))))
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (forall ((@x0 Term))
(implies (HasType @x0
Typ_fun_1296)
(or label_1299
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (BoxInt 0)
(BoxInt 0)))))))))
(check-sat)
(echo "label_1299")
(eval label_1299)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(31,44-33,41)
; encoding sigelt Test.sub_elam
; <Start encoding Test.sub_elam>
(declare-fun Test.sub_elam (Term) Term)
;;;;;;;;;;;;;;;;(i:int{(i >= 0)} -> Tot exp)
(declare-fun Typ_fun_1302 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1302 kinding
(assert (HasKind Typ_fun_1302
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1302)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1302)))))
;;;;;;;;;;;;;;;;Typ_fun_1302 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1302)
(forall ((@x2 Term))
(! (implies (HasType @x2
Typ_refine_1144)
(HasType (ApplyEE @x1
@x2)
Test.exp))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1302)))))
(declare-fun Typ_refine_1305 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1305 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1305 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;r:sub{((renaming s) ==> (renaming r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1305 @x2))
(and (HasType @x1
Typ_fun_1302)
(implies (forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x2
@x3))))))
(forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x1
@x3)))))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1305 @x2))))))
;;;;;;;;;;;;;;;;(s:sub -> Tot r:sub{((renaming s) ==> (renaming r))} (decreases %[1; (is_renaming s); 0; (EVar 0)]))
(declare-fun Typ_fun_1307 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1307 kinding
(assert (HasKind Typ_fun_1307
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1307)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1307)))))
;;;;;;;;;;;;;;;;Typ_fun_1307 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1307)
(forall ((@x2 Term))
(! (implies (HasType @x2
Test.sub@tok)
(HasType (ApplyEE @x1
@x2)
(Typ_refine_1305 @x2)))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1307)))))
(declare-fun Test.sub_elam@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1310
(Term_constr_id Test.sub_elam@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.sub_elam@tok
@x0)
(Test.sub_elam @x0))
:pattern ((ApplyEE Test.sub_elam@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.sub_elam@tok
Typ_fun_1307))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.sub@tok)
(HasType (Test.sub_elam @x0)
(Typ_refine_1305 @x0)))
:pattern ((Test.sub_elam @x0)))))
; </end encoding Test.sub_elam>
(push)
; Starting query at bug281.fst(35,0-43,48)
;;;;;;;;;;;;;;;;s : sub ((i:int{(i >= 0)} -> Tot exp))
(declare-fun s___2_18 () Term)
(assert (HasType s___2_18
Typ_fun_1302))
(declare-fun Typ_refine_1314 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1314 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1314 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;_2_969:exp{(%[(is_evar _2_969); (is_renaming s); 1; _2_969] << %[1; (is_renaming s); 0; (EVar 0)])}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1314 @x2))
(and (HasType @x1
Test.exp)
(Valid (Prims.Precedes Prims.lex_t
Prims.lex_t
(LexCons (Test.is_evar @x1)
(LexCons (Test.is_renaming @x2)
(LexCons (BoxInt 1)
(LexCons @x1
Prims.LexTop@tok))))
(LexCons (BoxInt 1)
(LexCons (Test.is_renaming s___2_18)
(LexCons (BoxInt 0)
(LexCons (Test.EVar (BoxInt 0))
Prims.LexTop@tok))))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1314 @x2))))))
(declare-fun Test.esubst__1313 (Term Term) Term)
;;;;;;;;;;;;;;;;(s:sub -> e:_2_969:exp{(%[(is_evar _2_969); (is_renaming s); 1; _2_969] << %[1; (is_renaming s); 0; (EVar 0)])} -> Tot r:exp{(((renaming s) /\ (is_EVar e)) ==> (is_EVar r))} (decreases %[(is_evar e); (is_renaming s); 1; e]))
(declare-fun Typ_fun_1317 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1317 kinding
(assert (HasKind Typ_fun_1317
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1317)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1317)))))
;;;;;;;;;;;;;;;;Typ_fun_1317 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1317)
(forall ((@x2 Term) (@x3 Term))
(! (implies (and (HasType @x2
Test.sub@tok)
(HasType @x3
(Typ_refine_1314 @x2)))
(HasType (ApplyEE (ApplyEE @x1
@x2)
@x3)
(Typ_refine_1289 @x3
@x2)))
:pattern ((ApplyEE (ApplyEE @x1
@x2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1317)))))
(declare-fun Test.esubst__1313@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1320
(Term_constr_id Test.esubst__1313@tok)))
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (ApplyEE (ApplyEE Test.esubst__1313@tok
@x0)
@x1)
(Test.esubst__1313 @x0
@x1))
:pattern ((ApplyEE (ApplyEE Test.esubst__1313@tok
@x0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.esubst__1313@tok
Typ_fun_1317))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term) (@x1 Term))
(! (implies (and (HasType @x0
Test.sub@tok)
(HasType @x1
(Typ_refine_1314 @x0)))
(HasType (Test.esubst__1313 @x0
@x1)
(Typ_refine_1289 @x1
@x0)))
:pattern ((Test.esubst__1313 @x0
@x1)))))
(declare-fun Typ_refine_1323 () Type)
(assert (HasKind Typ_refine_1323
Kind_type))
;;;;;;;;;;;;;;;;_2_1279:sub{(%[1; (is_renaming _2_1279); 0; (EVar 0)] << %[1; (is_renaming s); 0; (EVar 0)])}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1323)
(and (HasType @x1
Typ_fun_1302)
(Valid (Prims.Precedes Prims.lex_t
Prims.lex_t
(LexCons (BoxInt 1)
(LexCons (Test.is_renaming @x1)
(LexCons (BoxInt 0)
(LexCons (Test.EVar (BoxInt 0))
Prims.LexTop@tok))))
(LexCons (BoxInt 1)
(LexCons (Test.is_renaming s___2_18)
(LexCons (BoxInt 0)
(LexCons (Test.EVar (BoxInt 0))
Prims.LexTop@tok))))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1323)))))
(declare-fun Test.sub_elam__1321 (Term) Term)
;;;;;;;;;;;;;;;;(s:_2_1279:sub{(%[1; (is_renaming _2_1279); 0; (EVar 0)] << %[1; (is_renaming s); 0; (EVar 0)])} -> Tot r:sub{((renaming s) ==> (renaming r))} (decreases %[1; (is_renaming s); 0; (EVar 0)]))
(declare-fun Typ_fun_1328 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1328 kinding
(assert (HasKind Typ_fun_1328
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1328)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1328)))))
;;;;;;;;;;;;;;;;Typ_fun_1328 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1328)
(forall ((@x2 Term))
(! (implies (HasType @x2
Typ_refine_1323)
(HasType (ApplyEE @x1
@x2)
(Typ_refine_1305 @x2)))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1328)))))
(declare-fun Test.sub_elam__1321@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1331
(Term_constr_id Test.sub_elam__1321@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.sub_elam__1321@tok
@x0)
(Test.sub_elam__1321 @x0))
:pattern ((ApplyEE Test.sub_elam__1321@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.sub_elam__1321@tok
Typ_fun_1328))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_1323)
(HasType (Test.sub_elam__1321 @x0)
(Typ_refine_1305 @x0)))
:pattern ((Test.sub_elam__1321 @x0)))))
(declare-fun label_1334 () Bool)
(declare-fun label_1339 () Bool)
(declare-fun label_1338 () Bool)
(declare-fun label_1337 () Bool)
(declare-fun label_1340 () Bool)
(declare-fun label_1333 () Bool)
(declare-fun Typ_refine_1335 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1335 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1335 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar (s (x - 1)))) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1335 @x2))
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (Test.sub_einc @x3))))))
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_18
(Prims.op_Subtraction @x2
(BoxInt 1)))))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1335 @x2))))))
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (and (forall ((@x0 Term))
(implies (and (HasType @x0
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x0
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x0
(BoxInt 0))))))
(forall ((@x0 Term))
(implies (and (HasType @x0
Typ_fun_1302)
(implies (forall ((@x1 Term))
(implies (HasType @x1
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_18
@x1))))))
(forall ((@x1 Term))
(implies (HasType @x1
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x0
@x1)))))))
(forall ((@x1 Term))
(implies (HasType @x1
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_18
@x1)))))))
(forall ((@x1 Term))
(implies (HasType @x1
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x0
@x1))))))))
(forall ((@x0 Term) (@x1 Term))
(implies (and (HasType @x0
Typ_refine_1144)
(HasType @x1
Prims.bool)
(= @x1
(Prims.op_Equality Prims.int
@x0
(BoxInt 0))))
(ite (= @x1
(BoxBool true))
(or label_1334
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (BoxInt 0)
(BoxInt 0)))))
(ite (= @x1
(BoxBool false))
(and (or label_1339
(forall ((@x2 Term))
(implies (and (HasType @x2
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))))
(or label_1338
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (Prims.op_Subtraction @x0
(BoxInt 1))
(BoxInt 0)))))
(forall ((@x2 Term))
(implies (and (HasType @x2
Test.exp)
(= @x2
(ApplyEE s___2_18
(Prims.op_Subtraction @x0
(BoxInt 1)))))
(or label_1337
(Valid (Prims.Precedes Prims.lex_t
Prims.lex_t
(LexCons (Test.is_evar @x2)
(LexCons (Test.is_renaming Test.sub_einc@tok)
(LexCons (BoxInt 1)
(LexCons @x2
Prims.LexTop@tok))))
(LexCons (BoxInt 1)
(LexCons (Test.is_renaming s___2_18)
(LexCons (BoxInt 0)
(LexCons (Test.EVar (BoxInt 0))
Prims.LexTop@tok))))))))))
label_1340))))
(or label_1333
(and (forall ((@x0 Term))
(implies (and (HasType @x0
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x0
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x0
(BoxInt 0))))))
(implies (forall ((@x0 Term))
(implies (HasType @x0
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_18
@x0))))))
(forall ((@x0 Term))
(implies (HasType @x0
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ite (= (Prims.op_Equality Prims.int
@x0
(BoxInt 0))
(BoxBool true))
(Test.EVar (BoxInt 0))
(ite (= (Prims.op_Equality Prims.int
@x0
(BoxInt 0))
(BoxBool false))
(Test.esubst__1313 Test.sub_einc@tok
(ApplyEE s___2_18
(Prims.op_Subtraction @x0
(BoxInt 1))))
Term_unit)))))))))))))
(check-sat)
(echo "label_1334")
(eval label_1334)
(echo "label_1339")
(eval label_1339)
(echo "label_1338")
(eval label_1338)
(echo "label_1337")
(eval label_1337)
(echo "label_1340")
(eval label_1340)
(echo "label_1333")
(eval label_1333)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(35,0-43,48)
(push)
; Starting query at bug281.fst(35,0-43,48)
;;;;;;;;;;;;;;;;s : sub ((i:int{(i >= 0)} -> Tot exp))
(declare-fun s___2_21 () Term)
(assert (HasType s___2_21
Typ_fun_1302))
;;;;;;;;;;;;;;;;e : exp (exp)
(declare-fun e___2_22 () Term)
(assert (HasType e___2_22
Test.exp))
(declare-fun Typ_refine_1344 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1344 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1344 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;_2_2587:exp{(%[(is_evar _2_2587); (is_renaming s); 1; _2_2587] << %[(is_evar e); (is_renaming s); 1; e])}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1344 @x2))
(and (HasType @x1
Test.exp)
(Valid (Prims.Precedes Prims.lex_t
Prims.lex_t
(LexCons (Test.is_evar @x1)
(LexCons (Test.is_renaming @x2)
(LexCons (BoxInt 1)
(LexCons @x1
Prims.LexTop@tok))))
(LexCons (Test.is_evar e___2_22)
(LexCons (Test.is_renaming s___2_21)
(LexCons (BoxInt 1)
(LexCons e___2_22
Prims.LexTop@tok))))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1344 @x2))))))
(declare-fun Test.esubst__1343 (Term Term) Term)
;;;;;;;;;;;;;;;;(s:sub -> e:_2_2587:exp{(%[(is_evar _2_2587); (is_renaming s); 1; _2_2587] << %[(is_evar e); (is_renaming s); 1; e])} -> Tot r:exp{(((renaming s) /\ (is_EVar e)) ==> (is_EVar r))} (decreases %[(is_evar e); (is_renaming s); 1; e]))
(declare-fun Typ_fun_1347 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1347 kinding
(assert (HasKind Typ_fun_1347
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1347)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1347)))))
;;;;;;;;;;;;;;;;Typ_fun_1347 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1347)
(forall ((@x2 Term) (@x3 Term))
(! (implies (and (HasType @x2
Test.sub@tok)
(HasType @x3
(Typ_refine_1344 @x2)))
(HasType (ApplyEE (ApplyEE @x1
@x2)
@x3)
(Typ_refine_1289 @x3
@x2)))
:pattern ((ApplyEE (ApplyEE @x1
@x2)
@x3)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1347)))))
(declare-fun Test.esubst__1343@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1350
(Term_constr_id Test.esubst__1343@tok)))
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (ApplyEE (ApplyEE Test.esubst__1343@tok
@x0)
@x1)
(Test.esubst__1343 @x0
@x1))
:pattern ((ApplyEE (ApplyEE Test.esubst__1343@tok
@x0)
@x1)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.esubst__1343@tok
Typ_fun_1347))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term) (@x1 Term))
(! (implies (and (HasType @x0
Test.sub@tok)
(HasType @x1
(Typ_refine_1344 @x0)))
(HasType (Test.esubst__1343 @x0
@x1)
(Typ_refine_1289 @x1
@x0)))
:pattern ((Test.esubst__1343 @x0
@x1)))))
(declare-fun Typ_refine_1353 () Type)
(assert (HasKind Typ_refine_1353
Kind_type))
;;;;;;;;;;;;;;;;_2_2943:sub{(%[1; (is_renaming _2_2943); 0; (EVar 0)] << %[(is_evar e); (is_renaming s); 1; e])}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1353)
(and (HasType @x1
Typ_fun_1302)
(Valid (Prims.Precedes Prims.lex_t
Prims.lex_t
(LexCons (BoxInt 1)
(LexCons (Test.is_renaming @x1)
(LexCons (BoxInt 0)
(LexCons (Test.EVar (BoxInt 0))
Prims.LexTop@tok))))
(LexCons (Test.is_evar e___2_22)
(LexCons (Test.is_renaming s___2_21)
(LexCons (BoxInt 1)
(LexCons e___2_22
Prims.LexTop@tok))))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1353)))))
(declare-fun Test.sub_elam__1351 (Term) Term)
;;;;;;;;;;;;;;;;(s:_2_2943:sub{(%[1; (is_renaming _2_2943); 0; (EVar 0)] << %[(is_evar e); (is_renaming s); 1; e])} -> Tot r:sub{((renaming s) ==> (renaming r))} (decreases %[1; (is_renaming s); 0; (EVar 0)]))
(declare-fun Typ_fun_1358 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1358 kinding
(assert (HasKind Typ_fun_1358
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1358)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1358)))))
;;;;;;;;;;;;;;;;Typ_fun_1358 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1358)
(forall ((@x2 Term))
(! (implies (HasType @x2
Typ_refine_1353)
(HasType (ApplyEE @x1
@x2)
(Typ_refine_1305 @x2)))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1358)))))
(declare-fun Test.sub_elam__1351@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1361
(Term_constr_id Test.sub_elam__1351@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.sub_elam__1351@tok
@x0)
(Test.sub_elam__1351 @x0))
:pattern ((ApplyEE Test.sub_elam__1351@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.sub_elam__1351@tok
Typ_fun_1358))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Typ_refine_1353)
(HasType (Test.sub_elam__1351 @x0)
(Typ_refine_1305 @x0)))
:pattern ((Test.sub_elam__1351 @x0)))))
(declare-fun label_1364 () Bool)
(declare-fun label_1363 () Bool)
(declare-fun label_1369 () Bool)
(declare-fun label_1368 () Bool)
(declare-fun label_1367 () Bool)
(declare-fun label_1378 () Bool)
(declare-fun label_1377 () Bool)
(declare-fun label_1376 () Bool)
(declare-fun label_1375 () Bool)
(declare-fun label_1379 () Bool)
(declare-fun Typ_refine_1380 () Type)
(assert (HasKind Typ_refine_1380
Kind_type))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (s x))) /\ (is_EVar e)) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1380)
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_21
@x2))))))
(Valid (Prims.b2t (Test.is_EVar e___2_22))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1380)))))
(declare-fun Typ_refine_1365 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1365 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1365 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (s x))) /\ (is_EVar b)) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1365 @x2))
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_21
@x3))))))
(Valid (Prims.b2t (Test.is_EVar @x2))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1365 @x2))))))
(declare-fun Typ_refine_1371 () Type)
(assert (HasKind Typ_refine_1371
Kind_type))
;;;;;;;;;;;;;;;;r:(i:int{(i >= 0)} -> Tot exp){((forall (x). (is_EVar (s x))) ==> (forall (x). (is_EVar (r x))))}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1371)
(and (HasType @x1
Typ_fun_1302)
(implies (forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_21
@x2))))))
(forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x1
@x2)))))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1371)))))
(declare-fun Typ_refine_1373 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1373 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1373 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_elam s x))) /\ (is_EVar b)) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1373 @x2))
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE (ApplyEE Test.sub_elam__1351@tok
s___2_21)
@x3))))))
(Valid (Prims.b2t (Test.is_EVar @x2))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1373 @x2))))))
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (and (forall ((@x0 Term))
(implies (and (HasType @x0
Test.exp)
(implies (and (forall ((@x1 Term))
(implies (HasType @x1
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_21
@x1))))))
(Valid (Prims.b2t (Test.is_EVar e___2_22))))
(Valid (Prims.b2t (Test.is_EVar @x0))))
(forall ((@x1 Term))
(implies (HasType @x1
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_21
@x1))))))
(Valid (Prims.b2t (Test.is_EVar e___2_22))))
(Valid (Prims.b2t (Test.is_EVar @x0)))))
(ite (= (Test.is_EVar e___2_22)
(BoxBool true))
(forall ((@x0 Term))
(implies (and (HasType @x0
Typ_refine_1144)
(= e___2_22
(Test.EVar @x0)))
(and (or label_1364
(implies (Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x0
(BoxInt 0))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x0
(BoxInt 0))))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Test.exp)
(= @x1
(ApplyEE s___2_21
@x0)))
(or label_1363
(implies (and (forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_21
@x2))))))
(Valid (Prims.b2t (Test.is_EVar e___2_22))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))))))
(ite (= (Test.is_EApp e___2_22)
(BoxBool true))
(forall ((@x0 Term) (@x1 Term))
(implies (and (HasType @x0
Test.exp)
(HasType @x1
Test.exp)
(= e___2_22
(Test.EApp @x0
@x1)))
(and (or label_1369
(Valid (Prims.Precedes Prims.lex_t
Prims.lex_t
(LexCons (Test.is_evar @x0)
(LexCons (Test.is_renaming s___2_21)
(LexCons (BoxInt 1)
(LexCons @x0
Prims.LexTop@tok))))
(LexCons (Test.is_evar e___2_22)
(LexCons (Test.is_renaming s___2_21)
(LexCons (BoxInt 1)
(LexCons e___2_22
Prims.LexTop@tok)))))))
(forall ((@x2 Term))
(implies (and (HasType @x2
(Typ_refine_1365 @x0))
(= @x2
(Test.esubst__1343 s___2_21
@x0)))
(and (or label_1368
(Valid (Prims.Precedes Prims.lex_t
Prims.lex_t
(LexCons (Test.is_evar @x1)
(LexCons (Test.is_renaming s___2_21)
(LexCons (BoxInt 1)
(LexCons @x1
Prims.LexTop@tok))))
(LexCons (Test.is_evar e___2_22)
(LexCons (Test.is_renaming s___2_21)
(LexCons (BoxInt 1)
(LexCons e___2_22
Prims.LexTop@tok)))))))
(forall ((@x3 Term))
(implies (and (HasType @x3
(Typ_refine_1365 @x1))
(= @x3
(Test.esubst__1343 s___2_21
@x1)))
(forall ((@x4 Term))
(implies (and (HasType @x4
Test.exp)
(= @x4
(Test.EApp (Test.esubst__1343 s___2_21
@x0)
(Test.esubst__1343 s___2_21
@x1))))
(or label_1367
(implies (and (forall ((@x5 Term))
(implies (HasType @x5
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_21
@x5))))))
(Valid (Prims.b2t (Test.is_EVar e___2_22))))
(Valid (Prims.b2t (Test.is_EVar @x4)))))))))))))))
(ite (= (Test.is_ELam e___2_22)
(BoxBool true))
(forall ((@x0 Term))
(implies (and (HasType @x0
Test.exp)
(= e___2_22
(Test.ELam @x0)))
(and (or label_1378
(and (forall ((@x1 Term))
(implies (and (HasType @x1
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0))))))
(Valid (Prims.Precedes Prims.lex_t
Prims.lex_t
(LexCons (BoxInt 1)
(LexCons (Test.is_renaming s___2_21)
(LexCons (BoxInt 0)
(LexCons (Test.EVar (BoxInt 0))
Prims.LexTop@tok))))
(LexCons (Test.is_evar e___2_22)
(LexCons (Test.is_renaming s___2_21)
(LexCons (BoxInt 1)
(LexCons e___2_22
Prims.LexTop@tok))))))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Typ_refine_1371)
(= @x1
(Test.sub_elam__1351 s___2_21)))
(and (or label_1377
(forall ((@x2 Term))
(implies (and (HasType @x2
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))))
(or label_1376
(Valid (Prims.Precedes Prims.lex_t
Prims.lex_t
(LexCons (Test.is_evar @x0)
(LexCons (Test.is_renaming (Test.sub_elam__1351 s___2_21))
(LexCons (BoxInt 1)
(LexCons @x0
Prims.LexTop@tok))))
(LexCons (Test.is_evar e___2_22)
(LexCons (Test.is_renaming s___2_21)
(LexCons (BoxInt 1)
(LexCons e___2_22
Prims.LexTop@tok)))))))
(forall ((@x2 Term))
(implies (and (HasType @x2
(Typ_refine_1373 @x0))
(= @x2
(Test.esubst__1343 (Test.sub_elam__1351 s___2_21)
@x0)))
(forall ((@x3 Term))
(implies (and (HasType @x3
Test.exp)
(= @x3
(Test.ELam (Test.esubst__1343 (Test.sub_elam__1351 s___2_21)
@x0))))
(or label_1375
(implies (and (forall ((@x4 Term))
(implies (HasType @x4
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE s___2_21
@x4))))))
(Valid (Prims.b2t (Test.is_EVar e___2_22))))
(Valid (Prims.b2t (Test.is_EVar @x3)))))))))))))))
label_1379))))))
(check-sat)
(echo "label_1364")
(eval label_1364)
(echo "label_1363")
(eval label_1363)
(echo "label_1369")
(eval label_1369)
(echo "label_1368")
(eval label_1368)
(echo "label_1367")
(eval label_1367)
(echo "label_1378")
(eval label_1378)
(echo "label_1377")
(eval label_1377)
(echo "label_1376")
(eval label_1376)
(echo "label_1375")
(eval label_1375)
(echo "label_1379")
(eval label_1379)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(35,0-43,48)
; encoding sigelt Test.sub_elam, Test.esubst
; <Start encoding >
;;;;;;;;;;;;;;;;Fuel-instrumented function name
(declare-fun Test.esubst__1385 (Fuel Term Term) Term)
;;;;;;;;;;;;;;;;Token for fuel-instrumented partial applications
(declare-fun Test.esubst__1386 () Term)
(declare-fun Exp_abs_1387 (Term Fuel) Term)
;;;;;;;;;;;;;;;;Fuel-instrumented function name
(declare-fun Test.sub_elam__1383 (Fuel Term) Term)
;;;;;;;;;;;;;;;;Token for fuel-instrumented partial applications
(declare-fun Test.sub_elam__1384 () Term)
;;;;;;;;;;;;;;;;Exp_abs_1387 typing
(assert (forall ((@x0 Term) (@u1 Fuel))
(! (HasType (Exp_abs_1387 @x0
@u1)
Typ_fun_1302)
:pattern ((Exp_abs_1387 @x0
@u1)))))
;;;;;;;;;;;;;;;;Exp_abs_1387 interpretation
(assert (forall ((@x0 Term) (@x1 Term) (@u2 Fuel))
(! (implies (IsTyped (ApplyEE (Exp_abs_1387 @x1
@u2)
@x0))
(= (ApplyEE (Exp_abs_1387 @x1
@u2)
@x0)
(ite (= (Prims.op_Equality Prims.int
@x0
(BoxInt 0))
(BoxBool true))
(Test.EVar (BoxInt 0))
(ite (= (Prims.op_Equality Prims.int
@x0
(BoxInt 0))
(BoxBool false))
(Test.esubst__1385 @u2
Test.sub_einc@tok
(ApplyEE @x1
(Prims.op_Subtraction @x0
(BoxInt 1))))
Term_unit))))
:pattern ((ApplyEE (Exp_abs_1387 @x1
@u2)
@x0)))))
;;;;;;;;;;;;;;;;Fuel token correspondence
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (= (ApplyEE (ApplyEF Test.sub_elam__1384
@u0)
@x1)
(Test.sub_elam__1383 @u0
@x1))
:pattern ((ApplyEE (ApplyEF Test.sub_elam__1384
@u0)
@x1)))))
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Test.sub@tok)
(HasType (Test.sub_elam__1383 @u0
@x1)
(Typ_refine_1305 @x1)))
:pattern ((Test.sub_elam__1383 @u0
@x1)))))
;;;;;;;;;;;;;;;;Correspondence of recursive function to instrumented version
(assert (forall ((@x0 Term))
(! (= (Test.sub_elam @x0)
(Test.sub_elam__1383 MaxFuel
@x0))
:pattern ((Test.sub_elam @x0)))))
;;;;;;;;;;;;;;;;Fuel irrelevance
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (= (Test.sub_elam__1383 (SFuel @u0)
@x1)
(Test.sub_elam__1383 @u0
@x1))
:pattern ((Test.sub_elam__1383 (SFuel @u0)
@x1)))))
;;;;;;;;;;;;;;;;Equation for fuel-instrumented recursive function: Test.sub_elam
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Test.sub@tok)
(= (Test.sub_elam__1383 (SFuel @u0)
@x1)
(Exp_abs_1387 @x1
@u0)))
:pattern ((Test.sub_elam__1383 (SFuel @u0)
@x1)))))
;;;;;;;;;;;;;;;;Fuel token correspondence
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (= (ApplyEE (ApplyEE (ApplyEF Test.esubst__1386
@u0)
@x1)
@x2)
(Test.esubst__1385 @u0
@x1
@x2))
:pattern ((ApplyEE (ApplyEE (ApplyEF Test.esubst__1386
@u0)
@x1)
@x2)))))
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (implies (and (HasType @x1
Test.sub@tok)
(HasType @x2
Test.exp))
(HasType (Test.esubst__1385 @u0
@x1
@x2)
(Typ_refine_1289 @x2
@x1)))
:pattern ((Test.esubst__1385 @u0
@x1
@x2)))))
;;;;;;;;;;;;;;;;Correspondence of recursive function to instrumented version
(assert (forall ((@x0 Term) (@x1 Term))
(! (= (Test.esubst @x0
@x1)
(Test.esubst__1385 MaxFuel
@x0
@x1))
:pattern ((Test.esubst @x0
@x1)))))
;;;;;;;;;;;;;;;;Fuel irrelevance
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (= (Test.esubst__1385 (SFuel @u0)
@x1
@x2)
(Test.esubst__1385 @u0
@x1
@x2))
:pattern ((Test.esubst__1385 (SFuel @u0)
@x1
@x2)))))
;;;;;;;;;;;;;;;;Equation for fuel-instrumented recursive function: Test.esubst
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (implies (and (HasType @x1
Test.sub@tok)
(HasType @x2
Test.exp))
(= (Test.esubst__1385 (SFuel @u0)
@x1
@x2)
(ite (is-Test.EVar @x2)
(ApplyEE @x1
(Test.EVar__0 @x2))
(ite (is-Test.EApp @x2)
(Test.EApp (Test.esubst__1385 @u0
@x1
(Test.EApp__0 @x2))
(Test.esubst__1385 @u0
@x1
(Test.EApp__1 @x2)))
(ite (is-Test.ELam @x2)
(Test.ELam (Test.esubst__1385 @u0
(Test.sub_elam__1383 @u0
@x1)
(Test.ELam__0 @x2)))
Term_unit)))))
:pattern ((Test.esubst__1385 (SFuel @u0)
@x1
@x2)))))
; </end encoding >
(push)
; Starting query at bug281.fst(45,0-45,28)
(declare-fun label_1396 () Bool)
(declare-fun Typ_refine_1391 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1391 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1391 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar e)) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1391 @x2))
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (Test.sub_einc @x3))))))
(Valid (Prims.b2t (Test.is_EVar @x2))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1391 @x2))))))
;;;;;;;;;;;;;;;;(e:exp -> Tot r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar e)) ==> (is_EVar r))} (decreases %[(is_evar e); (is_renaming sub_einc); 1; e]))
(declare-fun Typ_fun_1393 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1393 kinding
(assert (HasKind Typ_fun_1393
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1393)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1393)))))
;;;;;;;;;;;;;;;;Typ_fun_1393 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1393)
(forall ((@x2 Term))
(! (implies (HasType @x2
Test.exp)
(HasType (ApplyEE @x1
@x2)
(Typ_refine_1391 @x2)))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1393)))))
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (or label_1396
(forall ((@x0 Term))
(implies (and (HasType @x0
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x0
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x0
(BoxInt 0)))))))))
(check-sat)
(echo "label_1396")
(eval label_1396)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(45,0-45,28)
; encoding sigelt let Test.eesh : (e:exp -> Tot r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar e)) ==> (is_EVar r))} (decreases %[(is_evar e); (is_renaming sub_einc); 1; e]))
; <Start encoding Test.eesh>
(declare-fun Test.eesh (Term) Term)
(declare-fun Typ_refine_1398 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1398 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1398 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar e)) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1398 @x2))
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (Test.sub_einc @x3))))))
(Valid (Prims.b2t (Test.is_EVar @x2))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1398 @x2))))))
;;;;;;;;;;;;;;;;(e:exp -> Tot r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar e)) ==> (is_EVar r))} (decreases %[(is_evar e); (is_renaming sub_einc); 1; e]))
(declare-fun Typ_fun_1400 () Type)
;;;;;;;;;;;;;;;;Typ_fun_1400 kinding
(assert (HasKind Typ_fun_1400
Kind_type))
;;;;;;;;;;;;;;;;pre-typing for functions
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (implies (HasType @x1
Typ_fun_1400)
(is-Typ_fun (PreType @x1)))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1400)))))
;;;;;;;;;;;;;;;;Typ_fun_1400 interpretation
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_fun_1400)
(forall ((@x2 Term))
(! (implies (HasType @x2
Test.exp)
(HasType (ApplyEE @x1
@x2)
(Typ_refine_1398 @x2)))
:pattern ((ApplyEE @x1
@x2)))))
:pattern ((HasTypeFuel @u0
@x1
Typ_fun_1400)))))
(declare-fun Test.eesh@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1403
(Term_constr_id Test.eesh@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.eesh@tok
@x0)
(Test.eesh @x0))
:pattern ((ApplyEE Test.eesh@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.eesh@tok
Typ_fun_1400))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.exp)
(HasType (Test.eesh @x0)
(Typ_refine_1398 @x0)))
:pattern ((Test.eesh @x0)))))
;;;;;;;;;;;;;;;;Equation for Test.eesh
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.exp)
(= (Test.eesh @x0)
(Test.esubst Test.sub_einc@tok
@x0)))
:pattern ((Test.eesh @x0)))))
; </end encoding Test.eesh>
(push)
; Starting query at bug281.fst(47,0-47,81)
;;;;;;;;;;;;;;;;f : exp (exp)
(declare-fun f___2_30 () Term)
(assert (HasType f___2_30
Test.exp))
(declare-fun label_1412 () Bool)
(declare-fun label_1411 () Bool)
(declare-fun label_1410 () Bool)
(declare-fun Typ_refine_1404 () Type)
(assert (HasKind Typ_refine_1404
Kind_type))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar f)) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1404)
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (Test.sub_einc @x2))))))
(Valid (Prims.b2t (Test.is_EVar f___2_30))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1404)))))
(declare-fun Typ_refine_1406 () Type)
(assert (HasKind Typ_refine_1406
Kind_type))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar (eesh f))) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1406)
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (Test.sub_einc @x2))))))
(Valid (Prims.b2t (Test.is_EVar (Test.eesh f___2_30)))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1406)))))
(declare-fun Typ_refine_1408 () Type)
(assert (HasKind Typ_refine_1408
Kind_type))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar (eesh (eesh f)))) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1408)
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (Test.sub_einc @x2))))))
(Valid (Prims.b2t (Test.is_EVar (Test.eesh (Test.eesh f___2_30))))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1408)))))
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (forall ((@x0 Term))
(implies (and (HasType @x0
Typ_refine_1404)
(= @x0
(Test.eesh f___2_30)))
(forall ((@x1 Term))
(implies (and (HasType @x1
Typ_refine_1406)
(= @x1
(Test.eesh (Test.eesh f___2_30))))
(forall ((@x2 Term))
(implies (and (HasType @x2
Typ_refine_1408)
(= @x2
(Test.eesh (Test.eesh (Test.eesh f___2_30)))))
(and (or label_1412
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (BoxInt 2)
(BoxInt 0)))))
(forall ((@x3 Term))
(implies (and (HasType @x3
Test.exp)
(= @x3
(Test.EVar (BoxInt 2))))
(forall ((@x4 Term))
(implies (and (HasType @x4
Test.exp)
(= @x4
(Test.EApp (Test.eesh (Test.eesh (Test.eesh f___2_30)))
(Test.EVar (BoxInt 2)))))
(and (or label_1411
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (BoxInt 1)
(BoxInt 0)))))
(forall ((@x5 Term))
(implies (and (HasType @x5
Test.exp)
(= @x5
(Test.EVar (BoxInt 1))))
(forall ((@x6 Term))
(implies (and (HasType @x6
Test.exp)
(= @x6
(Test.EApp (Test.EApp (Test.eesh (Test.eesh (Test.eesh f___2_30)))
(Test.EVar (BoxInt 2)))
(Test.EVar (BoxInt 1)))))
(or label_1410
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual (BoxInt 0)
(BoxInt 0)))))))))))))))))))))))
(check-sat)
(echo "label_1412")
(eval label_1412)
(echo "label_1411")
(eval label_1411)
(echo "label_1410")
(eval label_1410)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(47,0-47,81)
; encoding sigelt let Test.test : (f:exp -> Tot exp)
; <Start encoding Test.test>
(declare-fun Test.test (Term) Term)
(declare-fun Test.test@tok () Term)
;;;;;;;;;;;;;;;;fresh token
(assert (= 1414
(Term_constr_id Test.test@tok)))
(assert (forall ((@x0 Term))
(! (= (ApplyEE Test.test@tok
@x0)
(Test.test @x0))
:pattern ((ApplyEE Test.test@tok
@x0)))))
;;;;;;;;;;;;;;;;function token typing
(assert (HasType Test.test@tok
Typ_fun_1218))
;;;;;;;;;;;;;;;;free var typing
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.exp)
(HasType (Test.test @x0)
Test.exp))
:pattern ((Test.test @x0)))))
;;;;;;;;;;;;;;;;Equation for Test.test
(assert (forall ((@x0 Term))
(! (implies (HasType @x0
Test.exp)
(= (Test.test @x0)
(Test.EApp (Test.EApp (Test.EApp (Test.eesh (Test.eesh (Test.eesh @x0)))
(Test.EVar (BoxInt 2)))
(Test.EVar (BoxInt 1)))
(Test.EVar (BoxInt 0)))))
:pattern ((Test.test @x0)))))
; </end encoding Test.test>
(push)
; Starting query at bug281.fst(47,81-50,55)
(declare-fun label_1420 () Bool)
(declare-fun Typ_refine_1416 (Term Term) Type)
(assert (forall ((@x0 Term) (@x1 Term))
(! (HasKind (Typ_refine_1416 @x0
@x1)
Kind_type)
:pattern ((HasKind (Typ_refine_1416 @x0
@x1)
Kind_type)))))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_elam s x))) /\ (is_EVar (eesh e))) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term) (@x3 Term))
(! (iff (HasType @x1
(Typ_refine_1416 @x2
@x3))
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x4 Term))
(implies (HasType @x4
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE (ApplyEE Test.sub_elam@tok
@x3)
@x4))))))
(Valid (Prims.b2t (Test.is_EVar (Test.eesh @x2)))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1416 @x2
@x3))))))
(declare-fun Typ_refine_1418 (Term Term) Type)
(assert (forall ((@x0 Term) (@x1 Term))
(! (HasKind (Typ_refine_1418 @x0
@x1)
Kind_type)
:pattern ((HasKind (Typ_refine_1418 @x0
@x1)
Kind_type)))))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar (esubst s e))) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term) (@x3 Term))
(! (iff (HasType @x1
(Typ_refine_1418 @x2
@x3))
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x4 Term))
(implies (HasType @x4
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (Test.sub_einc @x4))))))
(Valid (Prims.b2t (Test.is_EVar (Test.esubst @x3
@x2)))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1418 @x2
@x3))))))
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (forall ((@x0 Term) (@x1 Term))
(implies (and (HasType @x0
Typ_fun_1302)
(HasType @x1
Test.exp))
(or label_1420
(forall ((@x2 Term))
(implies (and (HasType @x2
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))))))))
(check-sat)
(echo "label_1420")
(eval label_1420)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(47,81-50,55)
; encoding sigelt Test.lemma
; <Start encoding Test.lemma>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Test.lemma (Term Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Test.lemma@tok () Term)
; </end encoding Test.lemma>
(push)
; Starting query at bug281.fst(51,0-51,23)
(pop)
; Ending query at bug281.fst(51,0-51,23)
; encoding sigelt let Test.lemma : (s:sub -> e:exp -> Lemma (unit))
; <Skipped Test.lemma/>
(push)
; Starting query at bug281.fst(51,23-64,80)
(declare-fun label_1433 () Bool)
(declare-fun label_1432 () Bool)
(declare-fun label_1431 () Bool)
(declare-fun Typ_refine_1424 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1424 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1424 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;r:(i:int{(i >= 0)} -> Tot exp){((forall (x). (is_EVar (sub_elam s x))) ==> (forall (x). (is_EVar (r x))))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1424 @x2))
(and (HasType @x1
Typ_fun_1302)
(implies (forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE (ApplyEE Test.sub_elam@tok
@x2)
@x3))))))
(forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x1
@x3)))))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1424 @x2))))))
(declare-fun Typ_refine_1427 (Term) Type)
(assert (forall ((@x0 Term))
(! (HasKind (Typ_refine_1427 @x0)
Kind_type)
:pattern ((HasKind (Typ_refine_1427 @x0)
Kind_type)))))
;;;;;;;;;;;;;;;;r:(i:int{(i >= 0)} -> Tot exp){((forall (x). (is_EVar (sub_elam (sub_elam s) x))) ==> (forall (x). (is_EVar (r x))))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term))
(! (iff (HasType @x1
(Typ_refine_1427 @x2))
(and (HasType @x1
Typ_fun_1302)
(implies (forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE (ApplyEE Test.sub_elam@tok
(Test.sub_elam @x2))
@x3))))))
(forall ((@x3 Term))
(implies (HasType @x3
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x1
@x3)))))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1427 @x2))))))
(declare-fun Typ_refine_1429 (Term Term) Type)
(assert (forall ((@x0 Term) (@x1 Term))
(! (HasKind (Typ_refine_1429 @x0
@x1)
Kind_type)
:pattern ((HasKind (Typ_refine_1429 @x0
@x1)
Kind_type)))))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_elam (sub_elam (sub_elam s)) x))) /\ (is_EVar (test f))) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term) (@x2 Term) (@x3 Term))
(! (iff (HasType @x1
(Typ_refine_1429 @x2
@x3))
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x4 Term))
(implies (HasType @x4
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE (ApplyEE Test.sub_elam@tok
(Test.sub_elam (Test.sub_elam @x3)))
@x4))))))
(Valid (Prims.b2t (Test.is_EVar (Test.test @x2)))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
(Typ_refine_1429 @x2
@x3))))))
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (forall ((@x0 Term) (@x1 Term))
(implies (and (HasType @x0
Typ_fun_1302)
(HasType @x1
Test.exp))
(and (or label_1433
(forall ((@x2 Term))
(implies (and (HasType @x2
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))))
(forall ((@x2 Term))
(implies (and (HasType @x2
(Typ_refine_1424 @x0))
(= @x2
(Test.sub_elam (Test.sub_elam @x0))))
(and (or label_1432
(forall ((@x3 Term))
(implies (and (HasType @x3
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x3
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x3
(BoxInt 0)))))))
(forall ((@x3 Term))
(implies (and (HasType @x3
(Typ_refine_1427 @x0))
(= @x3
(Test.sub_elam (Test.sub_elam (Test.sub_elam @x0)))))
(or label_1431
(forall ((@x4 Term))
(implies (and (HasType @x4
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x4
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x4
(BoxInt 0)))))))))))))))))
(check-sat)
(echo "label_1433")
(eval label_1433)
(echo "label_1432")
(eval label_1432)
(echo "label_1431")
(eval label_1431)
(echo "Done!")
(pop)
(pop)
; Ending query at bug281.fst(51,23-64,80)
; encoding sigelt Test.plouf2
; <Start encoding Test.plouf2>
;;;;;;;;;;;;;;;;Uninterpreted function symbol for impure function
(declare-fun Test.plouf2 (Term Term) Term)
;;;;;;;;;;;;;;;;Uninterpreted name for impure function
(declare-fun Test.plouf2@tok () Term)
; </end encoding Test.plouf2>
(push)
; Starting query at bug281.fst(65,0-67,29)
;;;;;;;;;;;;;;;;s : sub ((i:int{(i >= 0)} -> Tot exp))
(declare-fun s___2_37 () Term)
(assert (HasType s___2_37
Typ_fun_1302))
;;;;;;;;;;;;;;;;f : exp (exp)
(declare-fun f___2_38 () Term)
(assert (HasType f___2_38
Test.exp))
(declare-fun label_1444 () Bool)
(declare-fun label_1443 () Bool)
(declare-fun label_1442 () Bool)
(declare-fun Typ_refine_1436 () Type)
(assert (HasKind Typ_refine_1436
Kind_type))
;;;;;;;;;;;;;;;;r:(i:int{(i >= 0)} -> Tot exp){((forall (x). (is_EVar (sub_elam s x))) ==> (forall (x). (is_EVar (r x))))}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1436)
(and (HasType @x1
Typ_fun_1302)
(implies (forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE (ApplyEE Test.sub_elam@tok
s___2_37)
@x2))))))
(forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (ApplyEE @x1
@x2)))))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1436)))))
(declare-fun Typ_refine_1438 () Type)
(assert (HasKind Typ_refine_1438
Kind_type))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar f)) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1438)
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (Test.sub_einc @x2))))))
(Valid (Prims.b2t (Test.is_EVar f___2_38))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1438)))))
(declare-fun Typ_refine_1440 () Type)
(assert (HasKind Typ_refine_1440
Kind_type))
;;;;;;;;;;;;;;;;r:exp{(((forall (x). (is_EVar (sub_einc x))) /\ (is_EVar (eesh f))) ==> (is_EVar r))}
(assert (forall ((@u0 Fuel) (@x1 Term))
(! (iff (HasType @x1
Typ_refine_1440)
(and (HasType @x1
Test.exp)
(implies (and (forall ((@x2 Term))
(implies (HasType @x2
Typ_refine_1144)
(Valid (Prims.b2t (Test.is_EVar (Test.sub_einc @x2))))))
(Valid (Prims.b2t (Test.is_EVar (Test.eesh f___2_38)))))
(Valid (Prims.b2t (Test.is_EVar @x1))))))
:pattern ((HasTypeFuel @u0
@x1
Typ_refine_1440)))))
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel ZFuel))))
;;;;;;;;;;;;;;;;query
(assert (not (forall ((@a0 Type))
(implies (and (forall ((@x1 Term))
(! (implies (HasType @x1
Prims.unit)
(HasKind (ApplyTE @a0
@x1)
Kind_type))
:pattern ((ApplyTE @a0
@x1))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam (Test.sub_elam s___2_37)))
(Test.test f___2_38))
(Test.test (Test.esubst s___2_37
f___2_38))))))
(Valid (ApplyTE @a0
@x1)))))
(and (or label_1444
(forall ((@x1 Term))
(implies (and (HasType @x1
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0)))))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Typ_refine_1436)
(= @x1
(Test.sub_elam (Test.sub_elam s___2_37))))
(and (or label_1443
(forall ((@x2 Term))
(implies (and (HasType @x2
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))))
(forall ((@x2 Term))
(implies (and (HasType @x2
Typ_refine_1438)
(= @x2
(Test.eesh f___2_38)))
(forall ((@x3 Term))
(implies (and (HasType @x3
Typ_refine_1440)
(= @x3
(Test.eesh (Test.eesh f___2_38))))
(forall ((@x4 Term))
(implies (and (HasType @x4
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam (Test.sub_elam s___2_37)))
(Test.eesh (Test.eesh (Test.eesh f___2_38))))
(Test.eesh (Test.esubst (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))))))
(= @x4
(Test.lemma (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))))
(and (or label_1442
(forall ((@x5 Term))
(implies (and (HasType @x5
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x5
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x5
(BoxInt 0)))))))
(forall ((@x5 Term))
(implies (and (HasType @x5
Typ_refine_1438)
(= @x5
(Test.eesh f___2_38)))
(forall ((@x6 Term))
(implies (and (HasType @x6
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))
(Test.eesh (Test.esubst (Test.sub_elam s___2_37)
(Test.eesh f___2_38))))))
(= @x6
(Test.lemma (Test.sub_elam s___2_37)
(Test.eesh f___2_38))))
(forall ((@x7 Term))
(implies (and (HasType @x7
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam s___2_37)
(Test.eesh f___2_38))
(Test.eesh (Test.esubst s___2_37
f___2_38)))))
(= @x7
(Test.lemma s___2_37
f___2_38)))
(Valid (ApplyTE @a0
@x7)))))))))))))))))))))))
(check-sat)
(echo "label_1444")
(eval label_1444)
(echo "label_1443")
(eval label_1443)
(echo "label_1442")
(eval label_1442)
(echo "Done!")
(pop)
(push)
; <fuel='4'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel ZFuel))))))
(assert (= MaxIFuel
(SFuel (SFuel (SFuel (SFuel (SFuel (SFuel ZFuel))))))))
;;;;;;;;;;;;;;;;query
(assert (not (forall ((@a0 Type))
(implies (and (forall ((@x1 Term))
(! (implies (HasType @x1
Prims.unit)
(HasKind (ApplyTE @a0
@x1)
Kind_type))
:pattern ((ApplyTE @a0
@x1))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam (Test.sub_elam s___2_37)))
(Test.test f___2_38))
(Test.test (Test.esubst s___2_37
f___2_38))))))
(Valid (ApplyTE @a0
@x1)))))
(and (or label_1444
(forall ((@x1 Term))
(implies (and (HasType @x1
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0)))))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Typ_refine_1436)
(= @x1
(Test.sub_elam (Test.sub_elam s___2_37))))
(and (or label_1443
(forall ((@x2 Term))
(implies (and (HasType @x2
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))))
(forall ((@x2 Term))
(implies (and (HasType @x2
Typ_refine_1438)
(= @x2
(Test.eesh f___2_38)))
(forall ((@x3 Term))
(implies (and (HasType @x3
Typ_refine_1440)
(= @x3
(Test.eesh (Test.eesh f___2_38))))
(forall ((@x4 Term))
(implies (and (HasType @x4
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam (Test.sub_elam s___2_37)))
(Test.eesh (Test.eesh (Test.eesh f___2_38))))
(Test.eesh (Test.esubst (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))))))
(= @x4
(Test.lemma (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))))
(and (or label_1442
(forall ((@x5 Term))
(implies (and (HasType @x5
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x5
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x5
(BoxInt 0)))))))
(forall ((@x5 Term))
(implies (and (HasType @x5
Typ_refine_1438)
(= @x5
(Test.eesh f___2_38)))
(forall ((@x6 Term))
(implies (and (HasType @x6
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))
(Test.eesh (Test.esubst (Test.sub_elam s___2_37)
(Test.eesh f___2_38))))))
(= @x6
(Test.lemma (Test.sub_elam s___2_37)
(Test.eesh f___2_38))))
(forall ((@x7 Term))
(implies (and (HasType @x7
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam s___2_37)
(Test.eesh f___2_38))
(Test.eesh (Test.esubst s___2_37
f___2_38)))))
(= @x7
(Test.lemma s___2_37
f___2_38)))
(Valid (ApplyTE @a0
@x7)))))))))))))))))))))))
(check-sat)
(echo "label_1444")
(eval label_1444)
(echo "label_1443")
(eval label_1443)
(echo "label_1442")
(eval label_1442)
(echo "Done!")
(pop)
(push)
; <fuel='8'>
(assert (= MaxFuel
(SFuel (SFuel (SFuel (SFuel (SFuel (SFuel (SFuel (SFuel ZFuel))))))))))
(assert (= MaxIFuel
(SFuel (SFuel (SFuel (SFuel (SFuel (SFuel ZFuel))))))))
;;;;;;;;;;;;;;;;query
(assert (not (forall ((@a0 Type))
(implies (and (forall ((@x1 Term))
(! (implies (HasType @x1
Prims.unit)
(HasKind (ApplyTE @a0
@x1)
Kind_type))
:pattern ((ApplyTE @a0
@x1))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam (Test.sub_elam s___2_37)))
(Test.test f___2_38))
(Test.test (Test.esubst s___2_37
f___2_38))))))
(Valid (ApplyTE @a0
@x1)))))
(and (or label_1444
(forall ((@x1 Term))
(implies (and (HasType @x1
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0)))))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Typ_refine_1436)
(= @x1
(Test.sub_elam (Test.sub_elam s___2_37))))
(and (or label_1443
(forall ((@x2 Term))
(implies (and (HasType @x2
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))))
(forall ((@x2 Term))
(implies (and (HasType @x2
Typ_refine_1438)
(= @x2
(Test.eesh f___2_38)))
(forall ((@x3 Term))
(implies (and (HasType @x3
Typ_refine_1440)
(= @x3
(Test.eesh (Test.eesh f___2_38))))
(forall ((@x4 Term))
(implies (and (HasType @x4
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam (Test.sub_elam s___2_37)))
(Test.eesh (Test.eesh (Test.eesh f___2_38))))
(Test.eesh (Test.esubst (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))))))
(= @x4
(Test.lemma (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))))
(and (or label_1442
(forall ((@x5 Term))
(implies (and (HasType @x5
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x5
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x5
(BoxInt 0)))))))
(forall ((@x5 Term))
(implies (and (HasType @x5
Typ_refine_1438)
(= @x5
(Test.eesh f___2_38)))
(forall ((@x6 Term))
(implies (and (HasType @x6
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))
(Test.eesh (Test.esubst (Test.sub_elam s___2_37)
(Test.eesh f___2_38))))))
(= @x6
(Test.lemma (Test.sub_elam s___2_37)
(Test.eesh f___2_38))))
(forall ((@x7 Term))
(implies (and (HasType @x7
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam s___2_37)
(Test.eesh f___2_38))
(Test.eesh (Test.esubst s___2_37
f___2_38)))))
(= @x7
(Test.lemma s___2_37
f___2_38)))
(Valid (ApplyTE @a0
@x7)))))))))))))))))))))))
(check-sat)
(echo "label_1444")
(eval label_1444)
(echo "label_1443")
(eval label_1443)
(echo "label_1442")
(eval label_1442)
(echo "Done!")
(pop)
(push)
; <fuel='1'>
(assert (= MaxFuel
(SFuel ZFuel)))
(assert (= MaxIFuel
(SFuel ZFuel)))
;;;;;;;;;;;;;;;;query
(assert (not (forall ((@a0 Type))
(implies (and (forall ((@x1 Term))
(! (implies (HasType @x1
Prims.unit)
(HasKind (ApplyTE @a0
@x1)
Kind_type))
:pattern ((ApplyTE @a0
@x1))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam (Test.sub_elam s___2_37)))
(Test.test f___2_38))
(Test.test (Test.esubst s___2_37
f___2_38))))))
(Valid (ApplyTE @a0
@x1)))))
(and (or label_1444
(forall ((@x1 Term))
(implies (and (HasType @x1
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x1
(BoxInt 0)))))))
(forall ((@x1 Term))
(implies (and (HasType @x1
Typ_refine_1436)
(= @x1
(Test.sub_elam (Test.sub_elam s___2_37))))
(and (or label_1443
(forall ((@x2 Term))
(implies (and (HasType @x2
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x2
(BoxInt 0)))))))
(forall ((@x2 Term))
(implies (and (HasType @x2
Typ_refine_1438)
(= @x2
(Test.eesh f___2_38)))
(forall ((@x3 Term))
(implies (and (HasType @x3
Typ_refine_1440)
(= @x3
(Test.eesh (Test.eesh f___2_38))))
(forall ((@x4 Term))
(implies (and (HasType @x4
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam (Test.sub_elam s___2_37)))
(Test.eesh (Test.eesh (Test.eesh f___2_38))))
(Test.eesh (Test.esubst (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))))))
(= @x4
(Test.lemma (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))))
(and (or label_1442
(forall ((@x5 Term))
(implies (and (HasType @x5
Prims.int)
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x5
(BoxInt 0)))))
(Valid (Prims.b2t (Prims.op_GreaterThanOrEqual @x5
(BoxInt 0)))))))
(forall ((@x5 Term))
(implies (and (HasType @x5
Typ_refine_1438)
(= @x5
(Test.eesh f___2_38)))
(forall ((@x6 Term))
(implies (and (HasType @x6
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam (Test.sub_elam s___2_37))
(Test.eesh (Test.eesh f___2_38)))
(Test.eesh (Test.esubst (Test.sub_elam s___2_37)
(Test.eesh f___2_38))))))
(= @x6
(Test.lemma (Test.sub_elam s___2_37)
(Test.eesh f___2_38))))
(forall ((@x7 Term))
(implies (and (HasType @x7
Prims.unit)
(Valid (Prims.b2t (Prims.op_Equality Test.exp
(Test.esubst (Test.sub_elam s___2_37)
(Test.eesh f___2_38))
(Test.eesh (Test.esubst s___2_37
f___2_38)))))
(= @x7
(Test.lemma s___2_37
f___2_38)))
(Valid (ApplyTE @a0
@x7)))))))))))))))))))))))
(check-sat)
(echo "label_1444")
(eval label_1444)
(echo "label_1443")
(eval label_1443)
(echo "label_1442")
(eval label_1442)
(echo "Done!")
(pop)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment