%%% this is a prelude for CVC3 uni : TYPE; ty : TYPE; sort: (ty, uni) -> BOOLEAN; witness: (ty) -> uni; % witness_sort ASSERT (FORALL (a : ty): (sort(a, witness(a)))); int: ty; real: ty; bool: ty; match_bool: (ty, BITVECTOR(1), uni, uni) -> uni; % match_bool_sort ASSERT (FORALL (a : ty): (FORALL (x : BITVECTOR(1), x1 : uni, x2 : uni): (sort(a, match_bool(a, x, x1, x2))))); % match_bool_True ASSERT (FORALL (a : ty): (FORALL (z : uni, z1 : uni): ((sort(a, z)) => (match_bool(a, 0bin1, z, z1) = z)))); % match_bool_False ASSERT (FORALL (a : ty): (FORALL (z : uni, z1 : uni): ((sort(a, z1)) => (match_bool(a, 0bin0, z, z1) = z1)))); index_bool: (BITVECTOR(1)) -> INT; % index_bool_True ASSERT (index_bool(0bin1) = 0); % index_bool_False ASSERT (index_bool(0bin0) = 1); % bool_inversion ASSERT (FORALL (u : BITVECTOR(1)): ((u = 0bin1) OR (u = 0bin0))); tuple0 : TYPE; tuple01: ty; Tuple0: tuple0; % tuple0_inversion ASSERT (FORALL (u : tuple0): (u = Tuple0)); a: BOOLEAN; b: BOOLEAN; c: BOOLEAN; da: BOOLEAN; % da_def ASSERT (da <=> (b AND (NOT c))); db: BOOLEAN; % db_def ASSERT (db <=> (a => c)); dc: BOOLEAN; % dc_def ASSERT (dc <=> ((NOT c) AND (a OR b))); QUERY % Thm01 % File "enigme.mlw", line 13, characters 7-12 (da AND (db AND dc));