Inductive Types : Set :=
    class : Classes -> Types
| array : Types -> Z -> Types.

Variable REFERENCES : Set.
Variable null : REFERENCES.
Variable instanceof : REFERENCES -> Types -> Prop.

Variable STRING : Set.
Variable j_string : STRING -> REFERENCES.
Variable instances : REFERENCES -> Prop.
Axiom nullInstances : (not (instances null)).

Variable typeof : REFERENCES -> Types.
Variable REFeq : REFERENCES -> REFERENCES -> bool.
Variable REFeq_refl : forall x, REFeq x x = true.
Variable REFeq_eq : forall x y, REFeq x y = true -> x = y.
Lemma REFeq_eq_true : forall x y, x = y-> REFeq x y = true.
Lemma REFeq_eq_not_false : forall x y, x=y-> REFeq x y <> false.
Lemma REFeq_false_not_eq : forall x y, REFeq x y = false -> x <> y.
Definition exists_REFeq_eq : forall x y, {b:bool | REFeq x y = b}.
Lemma not_eq_false_REFeq : forall x y, x <> y -> REFeq x y = false.
Lemma eq_dec : forall (x y:REFERENCES), {x = y} + {x <> y}.
Lemma Zeq_refl : forall x, Zeq x x = true.
Lemma Zeq_eq : forall x y, Zeq x y = true -> x = y.
Lemma Zeq_eq_true: forall x y, x = y -> Zeq x y = true.
Lemma not_eq_false_Zeq : forall x y, x<>y -> Zeq x y = false.
Lemma Zeq_false_not_eq : forall x y, Zeq x y = false -> x <> y.
Definition singleton (a:Set) (r s:a) := r = s :> a.
Definition union (s:Set) (a b:s -> Prop) (c:s) := (a c) \/ (b c).
Definition equalsOnOldInstances (s:Set) (f g:REFERENCES->s) :=forall x:REFERENCES, (instances x) -> (f x) = (g x) :> s.
Definition intersectionIsNotEmpty (s:Set)(f g:s->Prop) := (exists y : _, (f y) /\ (g y)).

Definition overridingCoupleRef (T:Set) (f:REFERENCES -> T)(a:REFERENCES) (b:T) (c:REFERENCES) := if (REFeq a c) then b else (f c).
Lemma overridingCoupleRef_diff : forall T f a b c, a <> c -> overridingCoupleRef T f a b c = f c.
Lemma overridingCoupleRef_eq : forall T f a b c, a = c -> overridingCoupleRef T f a b c = b.
Definition overridingCoupleZ (T:Set) (f:Z -> T)(a:Z) (b:T) (c:Z) := if (Zeq a c) then b else (f c).
Lemma overridingCoupleZ_diff : forall T f a b c, a <> c -> overridingCoupleZ T f a b c = f c.
Lemma overridingCoupleZ_eq : forall T f a b c, a = c -> overridingCoupleZ T f a b c = b.

Variable overridingArray : forall s t u:Set, (s->t->u)->(s->Prop)->(t->Prop)->u->s->t->u.
Axiom overridingArray_t_t : forall (s t u: Set) (f: s->t->u) (a: s->Prop) (b: t->Prop) (c: u) (x: s) (y: t), (a x) -> (b y) -> ((overridingArray s t u f a b c x y) = c :> u).
Axiom overridingArray_t_f : forall (s t u: Set) (f: s->t->u) (a: s->Prop) (b: t->Prop) (c: u) (x: s) (y: t), (a x) -> ~(b y) -> ((overridingArray s t u f a b c x y) = (f x y) :> u).
Axiom overridingArray_f : forall (s t u: Set) (f: s->t->u) (a: s->Prop) (b: t->Prop) (c: u) (x: s) (y: t), ~(a x) -> ((overridingArray s t u f a b c x y) = (f x y) :> u).
Definition setEquals (s: Set) (f g: s->Prop) := forall x: s, (f x) -> (g x) /\ (g x) -> (f x).
Definition functionEquals (s t: Set)(f g: s->t) := forall x: s, ((f x) = (g x) :> t).
Definition interval (a b: Z) (c: Z) := (j_le a c) /\ (j_le c b).
Variable question : forall t: Type, Prop -> t -> t -> t.
Axiom question_t : forall (t: Set) (x: Prop) (y z: t), x -> ((question t x y z) = y :> t).
Axiom question_f : forall (t: Set) (x: Prop) (y z: t), ~x -> ((question t x y z) = z :> t).

Variable elemtype : Types -> Types.
Definition elemtypeDomDef (t:Types): Prop :=
    match t with
    | (class _) => False
    | (array cl n) => (1 <= n)
    end.
Axiom elemtypeAx : forall (c : Types) (n : Z), (1 <= n) ->
   ((elemtype (array c n)) = (array c (n - 1))).

Variable arraylength : REFERENCES -> t_int.
Variable intelements : REFERENCES -> Z -> Z.
Definition intelementsDomDef (r:REFERENCES): Prop := (instances r) /\ ((typeof r) = (array (class c_int) 1) :> Types).
Variable shortelements : REFERENCES -> Z -> Z.
Definition shortelementsDomDef (r:REFERENCES): Prop := (instances r) /\ ((typeof r) = (array (class c_short) 1) :> Types).
Variable charelements : REFERENCES -> Z -> Z.
Definition charelementsDomDef (r:REFERENCES): Prop := (instances r) /\ ((typeof r) = (array (class c_char) 1) :> Types).
Variable byteelements : REFERENCES -> Z -> Z.
Definition byteelementsDomDef (r:REFERENCES): Prop := (instances r) /\ ((typeof r) = (array (class c_byte) 1) :> Types).
Variable booleanelements : REFERENCES -> Z -> bool.
Axiom boolelementsDomDef : forall (r:REFERENCES), (instances r) /\ ((typeof r) = (array (class c_boolean) 1)).
Variable refelements : REFERENCES -> Z -> REFERENCES.
Axiom refelementsDom : forall r a b, r = refelements a b -> (r = null \/ instances r).

Index
This page has been generated by coqdoc