TPTP Problem File: COM286_1.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : COM286_1 : TPTP v9.3.1. Released v9.3.0.
% Domain : Computing Theory
% Problem : SQL-Preservation-Difference-tvalue-q2-isSomeQuery-False
% Version : Especial.
% English :
% Refs : [GE+15] Grewe et al. (2015), Type Systems for the Masses: Deri
% : [GE+18] Grewe et al. (2018), System Description: An Infrastruc
% : [GE+18] Grewe et al. (2018), Exploration of Language Specifica
% : [Gre19] Grewe (2019), Automating Type Soundness Proofs for Dom
% : [Gre24] Grewe (2015), Email to Geoff Sutcliffe
% Source : [Gre24]
% Names : SQL-Preservation-Difference-tvalue-q2-isSomeQuery-False [Gre24]
% Status : Theorem
% Rating : 0.17 v9.3.0
% Syntax : Number of formulae : 412 ( 115 unt; 117 typ; 0 def)
% Number of atoms : 1154 ( 865 equ)
% Maximal formula atoms : 129 ( 3 avg)
% Number of connectives : 1135 ( 276 ~; 184 |; 534 &)
% ( 17 <=>; 124 =>; 0 <=; 0 <~>)
% Maximal formula depth : 31 ( 6 avg)
% Maximal term depth : 8 ( 1 avg)
% Number of types : 21 ( 20 usr)
% Number of type conns : 133 ( 78 >; 55 *; 0 +; 0 <<)
% Number of predicates : 20 ( 19 usr; 0 prp; 1-3 aty)
% Number of functors : 78 ( 78 usr; 19 con; 0-3 aty)
% Number of variables : 1321 ( 847 !; 474 ?;1321 :)
% SPC : TF0_THM_EQU_NAR_NDT
% Comments :
%------------------------------------------------------------------------------
tff('Row_type',type,
vRow: $tType ).
tff('Pred_type',type,
vPred: $tType ).
tff('Name_type',type,
vName: $tType ).
tff('AttrL_type',type,
vAttrL: $tType ).
tff('RawTable_type',type,
vRawTable: $tType ).
tff('OptRawTable_type',type,
vOptRawTable: $tType ).
tff('FType_type',type,
vFType: $tType ).
tff('OptTType_type',type,
vOptTType: $tType ).
tff('TTContext_type',type,
vTTContext: $tType ).
tff('Query_type',type,
vQuery: $tType ).
tff('Val_type',type,
vVal: $tType ).
tff('OptTable_type',type,
vOptTable: $tType ).
tff('TStore_type',type,
vTStore: $tType ).
tff('Exp_type',type,
vExp: $tType ).
tff('Table_type',type,
vTable: $tType ).
tff('TType_type',type,
vTType: $tType ).
tff('Select_type',type,
vSelect: $tType ).
tff('OptFType_type',type,
vOptFType: $tType ).
tff('OptVal_type',type,
vOptVal: $tType ).
tff('OptQuery_type',type,
vOptQuery: $tType ).
tff(rempty_type,type,
vrempty: vRow ).
tff(constant_type,type,
vconstant: vVal > vExp ).
tff(lookup_type,type,
vlookup: vName > vExp ).
tff(tvalue_type,type,
vtvalue: vTable > vQuery ).
tff(acons_type,type,
vacons: ( vName * vAttrL ) > vAttrL ).
tff(someQuery_type,type,
vsomeQuery: vQuery > vOptQuery ).
tff(someFType_type,type,
vsomeFType: vFType > vOptFType ).
tff(all_type,type,
vall: vSelect ).
tff(rcons_type,type,
vrcons: ( vVal * vRow ) > vRow ).
tff(ttcons_type,type,
vttcons: ( vName * vFType * vTType ) > vTType ).
tff(tempty_type,type,
vtempty: vRawTable ).
tff(selectFromWhere_type,type,
vselectFromWhere: ( vSelect * vName * vPred ) > vQuery ).
tff(aempty_type,type,
vaempty: vAttrL ).
tff(noRawTable_type,type,
vnoRawTable: vOptRawTable ).
tff(tcons_type,type,
vtcons: ( vRow * vRawTable ) > vRawTable ).
tff(someTType_type,type,
vsomeTType: vTType > vOptTType ).
tff(someVal_type,type,
vsomeVal: vVal > vOptVal ).
tff('Intersection_type',type,
vIntersection: ( vQuery * vQuery ) > vQuery ).
tff(ptrue_type,type,
vptrue: vPred ).
tff(someRawTable_type,type,
vsomeRawTable: vRawTable > vOptRawTable ).
tff(bindStore_type,type,
vbindStore: ( vName * vTable * vTStore ) > vTStore ).
tff(noQuery_type,type,
vnoQuery: vOptQuery ).
tff(not_type,type,
vnot: vPred > vPred ).
tff(noVal_type,type,
vnoVal: vOptVal ).
tff(noTType_type,type,
vnoTType: vOptTType ).
tff(ttempty_type,type,
vttempty: vTType ).
tff(noTable_type,type,
vnoTable: vOptTable ).
tff('Difference_type',type,
vDifference: ( vQuery * vQuery ) > vQuery ).
tff(noFType_type,type,
vnoFType: vOptFType ).
tff('Union_type',type,
vUnion: ( vQuery * vQuery ) > vQuery ).
tff(q1_type,type,
vq1: vQuery ).
tff(bindContext_type,type,
vbindContext: ( vName * vTType * vTTContext ) > vTTContext ).
tff(lt_type,type,
vlt: ( vExp * vExp ) > vPred ).
tff(emptyContext_type,type,
vemptyContext: vTTContext ).
tff(gt_type,type,
vgt: ( vExp * vExp ) > vPred ).
tff(someTable_type,type,
vsomeTable: vTable > vOptTable ).
tff(emptyStore_type,type,
vemptyStore: vTStore ).
tff(eq_type,type,
veq: ( vExp * vExp ) > vPred ).
tff(and_type,type,
vand: ( vPred * vPred ) > vPred ).
tff(list_type,type,
vlist: vAttrL > vSelect ).
tff(table_type,type,
vtable: ( vAttrL * vRawTable ) > vTable ).
tff(q2_type,type,
vq2: vQuery ).
tff(projectTable_type,type,
vprojectTable: ( vSelect * vTable ) > vOptTable ).
tff(matchingAttrL_type,type,
vmatchingAttrL: ( vTType * vAttrL ) > $o ).
tff(isSomeTType_type,type,
visSomeTType: vOptTType > $o ).
tff(initFType_type,type,
vinitFType: vFType ).
tff(isSomeRawTable_type,type,
visSomeRawTable: vOptRawTable > $o ).
tff(projectTypeAttrL_type,type,
vprojectTypeAttrL: ( vAttrL * vTType ) > vOptTType ).
tff(enumVal_type,type,
venumVal: vVal > vVal ).
tff(initVal_type,type,
vinitVal: vVal ).
tff(getRaw_type,type,
vgetRaw: vTable > vRawTable ).
tff(sameLength_type,type,
vsameLength: ( vRawTable * vRawTable ) > $o ).
tff(filterSingleRow_type,type,
vfilterSingleRow: ( vPred * vAttrL * vRow ) > $o ).
tff(lessThan_type,type,
vlessThan: ( vVal * vVal ) > $o ).
tff(projectFirstRaw_type,type,
vprojectFirstRaw: vRawTable > vRawTable ).
tff(isSomeVal_type,type,
visSomeVal: vOptVal > $o ).
tff(lookupStore_type,type,
vlookupStore: ( vName * vTStore ) > vOptTable ).
tff(welltypedRawtable_type,type,
vwelltypedRawtable: ( vTType * vRawTable ) > $o ).
tff(rawUnion_type,type,
vrawUnion: ( vRawTable * vRawTable ) > vRawTable ).
tff(greaterThan_type,type,
vgreaterThan: ( vVal * vVal ) > $o ).
tff(isValue_type,type,
visValue: vQuery > $o ).
tff(welltypedtable_type,type,
vwelltypedtable: ( vTType * vTable ) > $o ).
tff(enumFType_type,type,
venumFType: vFType > vFType ).
tff(attachColToFrontRaw_type,type,
vattachColToFrontRaw: ( vRawTable * vRawTable ) > vRawTable ).
tff(projectEmptyCol_type,type,
vprojectEmptyCol: vRawTable > vRawTable ).
tff(isSomeFType_type,type,
visSomeFType: vOptFType > $o ).
tff(filterTable_type,type,
vfilterTable: ( vTable * vPred ) > vTable ).
tff(enumName_type,type,
venumName: vName > vName ).
tff(getAttrL_type,type,
vgetAttrL: vTable > vAttrL ).
tff(tcheckPred_type,type,
vtcheckPred: ( vPred * vTType ) > $o ).
tff(evalExpRow_type,type,
vevalExpRow: ( vExp * vAttrL * vRow ) > vOptVal ).
tff(rowIn_type,type,
vrowIn: ( vRow * vRawTable ) > $o ).
tff(findCol_type,type,
vfindCol: ( vName * vAttrL * vRawTable ) > vOptRawTable ).
tff(lookupContext_type,type,
vlookupContext: ( vName * vTTContext ) > vOptTType ).
tff(reduce_type,type,
vreduce: ( vQuery * vTStore ) > vOptQuery ).
tff(fieldType_type,type,
vfieldType: vVal > vFType ).
tff(rawIntersection_type,type,
vrawIntersection: ( vRawTable * vRawTable ) > vRawTable ).
tff(typeOfExp_type,type,
vtypeOfExp: ( vExp * vTType ) > vOptFType ).
tff(dropFirstColRaw_type,type,
vdropFirstColRaw: vRawTable > vRawTable ).
tff(findColType_type,type,
vfindColType: ( vName * vTType ) > vOptFType ).
tff(initName_type,type,
vinitName: vName ).
tff(filterRows_type,type,
vfilterRows: ( vRawTable * vAttrL * vPred ) > vRawTable ).
tff(isSomeTable_type,type,
visSomeTable: vOptTable > $o ).
tff(projectType_type,type,
vprojectType: ( vSelect * vTType ) > vOptTType ).
tff(welltypedRow_type,type,
vwelltypedRow: ( vTType * vRow ) > $o ).
tff(projectCols_type,type,
vprojectCols: ( vAttrL * vAttrL * vRawTable ) > vOptRawTable ).
tff(isSomeQuery_type,type,
visSomeQuery: vOptQuery > $o ).
tff(storeContextConsistent_type,type,
vstoreContextConsistent: ( vTStore * vTTContext ) > $o ).
tff(rawDifference_type,type,
vrawDifference: ( vRawTable * vRawTable ) > vRawTable ).
tff(ptcheck_type,type,
vptcheck: ( vTTContext * vQuery * vTType ) > $o ).
tff(append_type,type,
vappend: ( vAttrL * vAttrL ) > vAttrL ).
tff(getFType_type,type,
vgetFType: vOptFType > vFType ).
tff(getQuery_type,type,
vgetQuery: vOptQuery > vQuery ).
tff(getTType_type,type,
vgetTType: vOptTType > vTType ).
tff(getVal_type,type,
vgetVal: vOptVal > vVal ).
tff(getTable_type,type,
vgetTable: vOptTable > vTable ).
tff(getRawTable_type,type,
vgetRawTable: vOptRawTable > vRawTable ).
tff('dom-Select',axiom,
! [VX: vSelect] :
( ( VX = vall )
| ? [VAttrL0: vAttrL] : ( VX = vlist(VAttrL0) ) ) ).
tff('EQ-list',axiom,
! [VAttrL0: vAttrL,VAttrL1: vAttrL] :
( ( vlist(VAttrL0) = vlist(VAttrL1) )
=> ( VAttrL0 = VAttrL1 ) ) ).
tff('DIFF-all-list',axiom,
! [VAttrL0: vAttrL] : ( vall != vlist(VAttrL0) ) ).
tff('dom-Query',axiom,
! [VX: vQuery] :
( ? [VTable0: vTable] : ( VX = vtvalue(VTable0) )
| ? [VSelect0: vSelect,VName0: vName,VPred0: vPred] : ( VX = vselectFromWhere(VSelect0,VName0,VPred0) )
| ? [VQuery0: vQuery,VQuery1: vQuery] : ( VX = vUnion(VQuery0,VQuery1) )
| ? [VQuery0: vQuery,VQuery1: vQuery] : ( VX = vIntersection(VQuery0,VQuery1) )
| ? [VQuery0: vQuery,VQuery1: vQuery] : ( VX = vDifference(VQuery0,VQuery1) ) ) ).
tff('EQ-tvalue',axiom,
! [VTable0: vTable,VTable1: vTable] :
( ( vtvalue(VTable0) = vtvalue(VTable1) )
=> ( VTable0 = VTable1 ) ) ).
tff('EQ-selectFromWhere',axiom,
! [VName1: vName,VName0: vName,VSelect1: vSelect,VPred0: vPred,VSelect0: vSelect,VPred1: vPred] :
( ( vselectFromWhere(VSelect0,VName0,VPred0) = vselectFromWhere(VSelect1,VName1,VPred1) )
=> ( ( VSelect0 = VSelect1 )
& ( VName0 = VName1 )
& ( VPred0 = VPred1 ) ) ) ).
tff('EQ-Union',axiom,
! [VQuery0: vQuery,VQuery1: vQuery,VQuery2: vQuery,VQuery3: vQuery] :
( ( vUnion(VQuery0,VQuery1) = vUnion(VQuery2,VQuery3) )
=> ( ( VQuery0 = VQuery2 )
& ( VQuery1 = VQuery3 ) ) ) ).
tff('EQ-Intersection',axiom,
! [VQuery0: vQuery,VQuery1: vQuery,VQuery2: vQuery,VQuery3: vQuery] :
( ( vIntersection(VQuery0,VQuery1) = vIntersection(VQuery2,VQuery3) )
=> ( ( VQuery0 = VQuery2 )
& ( VQuery1 = VQuery3 ) ) ) ).
tff('EQ-Difference',axiom,
! [VQuery0: vQuery,VQuery1: vQuery,VQuery2: vQuery,VQuery3: vQuery] :
( ( vDifference(VQuery0,VQuery1) = vDifference(VQuery2,VQuery3) )
=> ( ( VQuery0 = VQuery2 )
& ( VQuery1 = VQuery3 ) ) ) ).
tff('DIFF-tvalue-selectFromWhere',axiom,
! [VTable0: vTable,VSelect0: vSelect,VName0: vName,VPred0: vPred] : ( vtvalue(VTable0) != vselectFromWhere(VSelect0,VName0,VPred0) ) ).
tff('DIFF-tvalue-Union',axiom,
! [VTable0: vTable,VQuery0: vQuery,VQuery1: vQuery] : ( vtvalue(VTable0) != vUnion(VQuery0,VQuery1) ) ).
tff('DIFF-tvalue-Intersection',axiom,
! [VTable0: vTable,VQuery0: vQuery,VQuery1: vQuery] : ( vtvalue(VTable0) != vIntersection(VQuery0,VQuery1) ) ).
tff('DIFF-tvalue-Difference',axiom,
! [VTable0: vTable,VQuery0: vQuery,VQuery1: vQuery] : ( vtvalue(VTable0) != vDifference(VQuery0,VQuery1) ) ).
tff('DIFF-selectFromWhere-Union',axiom,
! [VName0: vName,VPred0: vPred,VSelect0: vSelect,VQuery1: vQuery,VQuery0: vQuery] : ( vselectFromWhere(VSelect0,VName0,VPred0) != vUnion(VQuery0,VQuery1) ) ).
tff('DIFF-selectFromWhere-Intersection',axiom,
! [VName0: vName,VPred0: vPred,VSelect0: vSelect,VQuery1: vQuery,VQuery0: vQuery] : ( vselectFromWhere(VSelect0,VName0,VPred0) != vIntersection(VQuery0,VQuery1) ) ).
tff('DIFF-selectFromWhere-Difference',axiom,
! [VName0: vName,VPred0: vPred,VSelect0: vSelect,VQuery1: vQuery,VQuery0: vQuery] : ( vselectFromWhere(VSelect0,VName0,VPred0) != vDifference(VQuery0,VQuery1) ) ).
tff('DIFF-Union-Intersection',axiom,
! [VQuery0: vQuery,VQuery1: vQuery,VQuery2: vQuery,VQuery3: vQuery] : ( vUnion(VQuery0,VQuery1) != vIntersection(VQuery2,VQuery3) ) ).
tff('DIFF-Union-Difference',axiom,
! [VQuery0: vQuery,VQuery1: vQuery,VQuery2: vQuery,VQuery3: vQuery] : ( vUnion(VQuery0,VQuery1) != vDifference(VQuery2,VQuery3) ) ).
tff('DIFF-Intersection-Difference',axiom,
! [VQuery0: vQuery,VQuery1: vQuery,VQuery2: vQuery,VQuery3: vQuery] : ( vIntersection(VQuery0,VQuery1) != vDifference(VQuery2,VQuery3) ) ).
tff('dom-OptTable',axiom,
! [VX: vOptTable] :
( ( VX = vnoTable )
| ? [VTable0: vTable] : ( VX = vsomeTable(VTable0) ) ) ).
tff('EQ-someTable',axiom,
! [VTable0: vTable,VTable1: vTable] :
( ( vsomeTable(VTable0) = vsomeTable(VTable1) )
=> ( VTable0 = VTable1 ) ) ).
tff('DIFF-noTable-someTable',axiom,
! [VTable0: vTable] : ( vnoTable != vsomeTable(VTable0) ) ).
tff('dom-TType',axiom,
! [VX: vTType] :
( ( VX = vttempty )
| ? [VName0: vName,VFType0: vFType,VTType0: vTType] : ( VX = vttcons(VName0,VFType0,VTType0) ) ) ).
tff('EQ-ttcons',axiom,
! [VName1: vName,VName0: vName,VTType0: vTType,VTType1: vTType,VFType0: vFType,VFType1: vFType] :
( ( vttcons(VName0,VFType0,VTType0) = vttcons(VName1,VFType1,VTType1) )
=> ( ( VName0 = VName1 )
& ( VFType0 = VFType1 )
& ( VTType0 = VTType1 ) ) ) ).
tff('DIFF-ttempty-ttcons',axiom,
! [VName0: vName,VFType0: vFType,VTType0: vTType] : ( vttempty != vttcons(VName0,VFType0,VTType0) ) ).
tff('dom-TTContext',axiom,
! [VX: vTTContext] :
( ( VX = vemptyContext )
| ? [VName0: vName,VTType0: vTType,VTTContext0: vTTContext] : ( VX = vbindContext(VName0,VTType0,VTTContext0) ) ) ).
tff('EQ-bindContext',axiom,
! [VTTContext0: vTTContext,VName1: vName,VTTContext1: vTTContext,VName0: vName,VTType0: vTType,VTType1: vTType] :
( ( vbindContext(VName0,VTType0,VTTContext0) = vbindContext(VName1,VTType1,VTTContext1) )
=> ( ( VName0 = VName1 )
& ( VTType0 = VTType1 )
& ( VTTContext0 = VTTContext1 ) ) ) ).
tff('DIFF-emptyContext-bindContext',axiom,
! [VName0: vName,VTType0: vTType,VTTContext0: vTTContext] : ( vemptyContext != vbindContext(VName0,VTType0,VTTContext0) ) ).
tff('dom-OptRawTable',axiom,
! [VX: vOptRawTable] :
( ( VX = vnoRawTable )
| ? [VRawTable0: vRawTable] : ( VX = vsomeRawTable(VRawTable0) ) ) ).
tff('EQ-someRawTable',axiom,
! [VRawTable0: vRawTable,VRawTable1: vRawTable] :
( ( vsomeRawTable(VRawTable0) = vsomeRawTable(VRawTable1) )
=> ( VRawTable0 = VRawTable1 ) ) ).
tff('DIFF-noRawTable-someRawTable',axiom,
! [VRawTable0: vRawTable] : ( vnoRawTable != vsomeRawTable(VRawTable0) ) ).
tff('dom-OptTType',axiom,
! [VX: vOptTType] :
( ( VX = vnoTType )
| ? [VTType0: vTType] : ( VX = vsomeTType(VTType0) ) ) ).
tff('EQ-someTType',axiom,
! [VTType0: vTType,VTType1: vTType] :
( ( vsomeTType(VTType0) = vsomeTType(VTType1) )
=> ( VTType0 = VTType1 ) ) ).
tff('DIFF-noTType-someTType',axiom,
! [VTType0: vTType] : ( vnoTType != vsomeTType(VTType0) ) ).
tff('dom-Row',axiom,
! [VX: vRow] :
( ( VX = vrempty )
| ? [VVal0: vVal,VRow0: vRow] : ( VX = vrcons(VVal0,VRow0) ) ) ).
tff('EQ-rcons',axiom,
! [VVal0: vVal,VRow0: vRow,VVal1: vVal,VRow1: vRow] :
( ( vrcons(VVal0,VRow0) = vrcons(VVal1,VRow1) )
=> ( ( VVal0 = VVal1 )
& ( VRow0 = VRow1 ) ) ) ).
tff('DIFF-rempty-rcons',axiom,
! [VVal0: vVal,VRow0: vRow] : ( vrempty != vrcons(VVal0,VRow0) ) ).
tff('EQ-enumFType',axiom,
! [VFType0: vFType,VFType1: vFType] :
( ( venumFType(VFType0) = venumFType(VFType1) )
=> ( VFType0 = VFType1 ) ) ).
tff('DIFF-initFType-enumFType',axiom,
! [VFType0: vFType] : ( vinitFType != venumFType(VFType0) ) ).
tff('dom-RawTable',axiom,
! [VX: vRawTable] :
( ( VX = vtempty )
| ? [VRow0: vRow,VRawTable0: vRawTable] : ( VX = vtcons(VRow0,VRawTable0) ) ) ).
tff('EQ-tcons',axiom,
! [VRow0: vRow,VRawTable0: vRawTable,VRow1: vRow,VRawTable1: vRawTable] :
( ( vtcons(VRow0,VRawTable0) = vtcons(VRow1,VRawTable1) )
=> ( ( VRow0 = VRow1 )
& ( VRawTable0 = VRawTable1 ) ) ) ).
tff('DIFF-tempty-tcons',axiom,
! [VRow0: vRow,VRawTable0: vRawTable] : ( vtempty != vtcons(VRow0,VRawTable0) ) ).
tff('dom-OptQuery',axiom,
! [VX: vOptQuery] :
( ( VX = vnoQuery )
| ? [VQuery0: vQuery] : ( VX = vsomeQuery(VQuery0) ) ) ).
tff('EQ-someQuery',axiom,
! [VQuery0: vQuery,VQuery1: vQuery] :
( ( vsomeQuery(VQuery0) = vsomeQuery(VQuery1) )
=> ( VQuery0 = VQuery1 ) ) ).
tff('DIFF-noQuery-someQuery',axiom,
! [VQuery0: vQuery] : ( vnoQuery != vsomeQuery(VQuery0) ) ).
tff('EQ-enumName',axiom,
! [VName0: vName,VName1: vName] :
( ( venumName(VName0) = venumName(VName1) )
=> ( VName0 = VName1 ) ) ).
tff('DIFF-initName-enumName',axiom,
! [VName0: vName] : ( vinitName != venumName(VName0) ) ).
tff('dom-Exp',axiom,
! [VX: vExp] :
( ? [VVal0: vVal] : ( VX = vconstant(VVal0) )
| ? [VName0: vName] : ( VX = vlookup(VName0) ) ) ).
tff('EQ-constant',axiom,
! [VVal0: vVal,VVal1: vVal] :
( ( vconstant(VVal0) = vconstant(VVal1) )
=> ( VVal0 = VVal1 ) ) ).
tff('EQ-lookup',axiom,
! [VName0: vName,VName1: vName] :
( ( vlookup(VName0) = vlookup(VName1) )
=> ( VName0 = VName1 ) ) ).
tff('DIFF-constant-lookup',axiom,
! [VVal0: vVal,VName0: vName] : ( vconstant(VVal0) != vlookup(VName0) ) ).
tff('dom-Table',axiom,
! [VX: vTable] :
? [VAttrL0: vAttrL,VRawTable0: vRawTable] : ( VX = vtable(VAttrL0,VRawTable0) ) ).
tff('EQ-table',axiom,
! [VAttrL0: vAttrL,VRawTable0: vRawTable,VAttrL1: vAttrL,VRawTable1: vRawTable] :
( ( vtable(VAttrL0,VRawTable0) = vtable(VAttrL1,VRawTable1) )
=> ( ( VAttrL0 = VAttrL1 )
& ( VRawTable0 = VRawTable1 ) ) ) ).
tff('dom-OptVal',axiom,
! [VX: vOptVal] :
( ( VX = vnoVal )
| ? [VVal0: vVal] : ( VX = vsomeVal(VVal0) ) ) ).
tff('EQ-someVal',axiom,
! [VVal0: vVal,VVal1: vVal] :
( ( vsomeVal(VVal0) = vsomeVal(VVal1) )
=> ( VVal0 = VVal1 ) ) ).
tff('DIFF-noVal-someVal',axiom,
! [VVal0: vVal] : ( vnoVal != vsomeVal(VVal0) ) ).
tff('dom-Pred',axiom,
! [VX: vPred] :
( ( VX = vptrue )
| ? [VPred0: vPred,VPred1: vPred] : ( VX = vand(VPred0,VPred1) )
| ? [VPred0: vPred] : ( VX = vnot(VPred0) )
| ? [VExp0: vExp,VExp1: vExp] : ( VX = veq(VExp0,VExp1) )
| ? [VExp0: vExp,VExp1: vExp] : ( VX = vgt(VExp0,VExp1) )
| ? [VExp0: vExp,VExp1: vExp] : ( VX = vlt(VExp0,VExp1) ) ) ).
tff('EQ-and',axiom,
! [VPred0: vPred,VPred1: vPred,VPred2: vPred,VPred3: vPred] :
( ( vand(VPred0,VPred1) = vand(VPred2,VPred3) )
=> ( ( VPred0 = VPred2 )
& ( VPred1 = VPred3 ) ) ) ).
tff('EQ-not',axiom,
! [VPred0: vPred,VPred1: vPred] :
( ( vnot(VPred0) = vnot(VPred1) )
=> ( VPred0 = VPred1 ) ) ).
tff('EQ-eq',axiom,
! [VExp0: vExp,VExp1: vExp,VExp2: vExp,VExp3: vExp] :
( ( veq(VExp0,VExp1) = veq(VExp2,VExp3) )
=> ( ( VExp0 = VExp2 )
& ( VExp1 = VExp3 ) ) ) ).
tff('EQ-gt',axiom,
! [VExp0: vExp,VExp1: vExp,VExp2: vExp,VExp3: vExp] :
( ( vgt(VExp0,VExp1) = vgt(VExp2,VExp3) )
=> ( ( VExp0 = VExp2 )
& ( VExp1 = VExp3 ) ) ) ).
tff('EQ-lt',axiom,
! [VExp0: vExp,VExp1: vExp,VExp2: vExp,VExp3: vExp] :
( ( vlt(VExp0,VExp1) = vlt(VExp2,VExp3) )
=> ( ( VExp0 = VExp2 )
& ( VExp1 = VExp3 ) ) ) ).
tff('DIFF-ptrue-and',axiom,
! [VPred0: vPred,VPred1: vPred] : ( vptrue != vand(VPred0,VPred1) ) ).
tff('DIFF-ptrue-not',axiom,
! [VPred0: vPred] : ( vptrue != vnot(VPred0) ) ).
tff('DIFF-ptrue-eq',axiom,
! [VExp0: vExp,VExp1: vExp] : ( vptrue != veq(VExp0,VExp1) ) ).
tff('DIFF-ptrue-gt',axiom,
! [VExp0: vExp,VExp1: vExp] : ( vptrue != vgt(VExp0,VExp1) ) ).
tff('DIFF-ptrue-lt',axiom,
! [VExp0: vExp,VExp1: vExp] : ( vptrue != vlt(VExp0,VExp1) ) ).
tff('DIFF-and-not',axiom,
! [VPred0: vPred,VPred1: vPred,VPred2: vPred] : ( vand(VPred0,VPred1) != vnot(VPred2) ) ).
tff('DIFF-and-eq',axiom,
! [VPred0: vPred,VPred1: vPred,VExp0: vExp,VExp1: vExp] : ( vand(VPred0,VPred1) != veq(VExp0,VExp1) ) ).
tff('DIFF-and-gt',axiom,
! [VPred0: vPred,VPred1: vPred,VExp0: vExp,VExp1: vExp] : ( vand(VPred0,VPred1) != vgt(VExp0,VExp1) ) ).
tff('DIFF-and-lt',axiom,
! [VPred0: vPred,VPred1: vPred,VExp0: vExp,VExp1: vExp] : ( vand(VPred0,VPred1) != vlt(VExp0,VExp1) ) ).
tff('DIFF-not-eq',axiom,
! [VPred0: vPred,VExp0: vExp,VExp1: vExp] : ( vnot(VPred0) != veq(VExp0,VExp1) ) ).
tff('DIFF-not-gt',axiom,
! [VPred0: vPred,VExp0: vExp,VExp1: vExp] : ( vnot(VPred0) != vgt(VExp0,VExp1) ) ).
tff('DIFF-not-lt',axiom,
! [VPred0: vPred,VExp0: vExp,VExp1: vExp] : ( vnot(VPred0) != vlt(VExp0,VExp1) ) ).
tff('DIFF-eq-gt',axiom,
! [VExp0: vExp,VExp1: vExp,VExp2: vExp,VExp3: vExp] : ( veq(VExp0,VExp1) != vgt(VExp2,VExp3) ) ).
tff('DIFF-eq-lt',axiom,
! [VExp0: vExp,VExp1: vExp,VExp2: vExp,VExp3: vExp] : ( veq(VExp0,VExp1) != vlt(VExp2,VExp3) ) ).
tff('DIFF-gt-lt',axiom,
! [VExp0: vExp,VExp1: vExp,VExp2: vExp,VExp3: vExp] : ( vgt(VExp0,VExp1) != vlt(VExp2,VExp3) ) ).
tff('dom-TStore',axiom,
! [VX: vTStore] :
( ( VX = vemptyStore )
| ? [VName0: vName,VTable0: vTable,VTStore0: vTStore] : ( VX = vbindStore(VName0,VTable0,VTStore0) ) ) ).
tff('EQ-bindStore',axiom,
! [VTable1: vTable,VName1: vName,VTStore1: vTStore,VName0: vName,VTStore0: vTStore,VTable0: vTable] :
( ( vbindStore(VName0,VTable0,VTStore0) = vbindStore(VName1,VTable1,VTStore1) )
=> ( ( VName0 = VName1 )
& ( VTable0 = VTable1 )
& ( VTStore0 = VTStore1 ) ) ) ).
tff('DIFF-emptyStore-bindStore',axiom,
! [VName0: vName,VTable0: vTable,VTStore0: vTStore] : ( vemptyStore != vbindStore(VName0,VTable0,VTStore0) ) ).
tff('EQ-enumVal',axiom,
! [VVal0: vVal,VVal1: vVal] :
( ( venumVal(VVal0) = venumVal(VVal1) )
=> ( VVal0 = VVal1 ) ) ).
tff('DIFF-initVal-enumVal',axiom,
! [VVal0: vVal] : ( vinitVal != venumVal(VVal0) ) ).
tff('dom-OptFType',axiom,
! [VX: vOptFType] :
( ( VX = vnoFType )
| ? [VFType0: vFType] : ( VX = vsomeFType(VFType0) ) ) ).
tff('EQ-someFType',axiom,
! [VFType0: vFType,VFType1: vFType] :
( ( vsomeFType(VFType0) = vsomeFType(VFType1) )
=> ( VFType0 = VFType1 ) ) ).
tff('DIFF-noFType-someFType',axiom,
! [VFType0: vFType] : ( vnoFType != vsomeFType(VFType0) ) ).
tff('dom-AttrL',axiom,
! [VX: vAttrL] :
( ( VX = vaempty )
| ? [VName0: vName,VAttrL0: vAttrL] : ( VX = vacons(VName0,VAttrL0) ) ) ).
tff('EQ-acons',axiom,
! [VName0: vName,VAttrL0: vAttrL,VName1: vName,VAttrL1: vAttrL] :
( ( vacons(VName0,VAttrL0) = vacons(VName1,VAttrL1) )
=> ( ( VName0 = VName1 )
& ( VAttrL0 = VAttrL1 ) ) ) ).
tff('DIFF-aempty-acons',axiom,
! [VName0: vName,VAttrL0: vAttrL] : ( vaempty != vacons(VName0,VAttrL0) ) ).
tff('getRawTable-0',axiom,
! [Vrt: vRawTable] : ( vgetRawTable(vsomeRawTable(Vrt)) = Vrt ) ).
tff('getTable-0',axiom,
! [Vt: vTable] : ( vgetTable(vsomeTable(Vt)) = Vt ) ).
tff('getTType-0',axiom,
! [Vtt: vTType] : ( vgetTType(vsomeTType(Vtt)) = Vtt ) ).
tff('getQuery-0',axiom,
! [Vq: vQuery] : ( vgetQuery(vsomeQuery(Vq)) = Vq ) ).
tff('getVal-0',axiom,
! [Vv: vVal] : ( vgetVal(vsomeVal(Vv)) = Vv ) ).
tff('getFType-0',axiom,
! [Va: vFType] : ( vgetFType(vsomeFType(Va)) = Va ) ).
tff('append-0',axiom,
! [Vatl: vAttrL] : ( vappend(vaempty,Vatl) = Vatl ) ).
tff('append-1',axiom,
! [Vname: vName,Vatlr: vAttrL,Vatl: vAttrL] : ( vappend(vacons(Vname,Vatlr),Vatl) = vacons(Vname,vappend(Vatlr,Vatl)) ) ).
tff('append-INV',axiom,
! [VAttrL0: vAttrL,VAttrL1: vAttrL] :
( ? [Vatl0: vAttrL] :
( ( VAttrL0 = vaempty )
& ( VAttrL1 = Vatl0 )
& ( vappend(VAttrL0,VAttrL1) = Vatl0 ) )
| ? [Vname0: vName,Vatlr0: vAttrL,Vatl1: vAttrL] :
( ( VAttrL0 = vacons(Vname0,Vatlr0) )
& ( VAttrL1 = Vatl1 )
& ( vappend(VAttrL0,VAttrL1) = vacons(Vname0,vappend(Vatlr0,Vatl1)) ) ) ) ).
tff('getRaw-0',axiom,
! [VwildcardName0: vAttrL,Vrt: vRawTable] : ( vgetRaw(vtable(VwildcardName0,Vrt)) = Vrt ) ).
tff('getRaw-INV',axiom,
! [VTable0: vTable] :
? [VwildcardName00: vAttrL,Vrt0: vRawTable] :
( ( VTable0 = vtable(VwildcardName00,Vrt0) )
& ( vgetRaw(VTable0) = Vrt0 ) ) ).
tff('getAttrL-0',axiom,
! [Val: vAttrL,VwildcardName0: vRawTable] : ( vgetAttrL(vtable(Val,VwildcardName0)) = Val ) ).
tff('getAttrL-INV',axiom,
! [VTable0: vTable] :
? [Val0: vAttrL,VwildcardName00: vRawTable] :
( ( VTable0 = vtable(Val0,VwildcardName00) )
& ( vgetAttrL(VTable0) = Val0 ) ) ).
tff('matchingAttrL-0',axiom,
vmatchingAttrL(vttempty,vaempty) ).
tff('matchingAttrL-1',axiom,
! [Vttr: vTType,Va1: vName,VwildcardName0: vFType,Va2: vName,Val: vAttrL] :
( vmatchingAttrL(vttcons(Va1,VwildcardName0,Vttr),vacons(Va2,Val))
<=> ( ( Va1 = Va2 )
& vmatchingAttrL(Vttr,Val) ) ) ).
tff('matchingAttrL-2',axiom,
! [VwildcardName0: vTType,VwildcardName1: vAttrL] :
( ( ( ( VwildcardName0 != vttempty )
| ( VwildcardName1 != vaempty ) )
& ( ! [Va10: vName,VwildcardName00: vFType,Vttr0: vTType] : ( VwildcardName0 != vttcons(Va10,VwildcardName00,Vttr0) )
| ! [Va20: vName,Val0: vAttrL] : ( VwildcardName1 != vacons(Va20,Val0) ) ) )
=> ~ vmatchingAttrL(VwildcardName0,VwildcardName1) ) ).
tff('matchingAttrL-true-INV',axiom,
! [VTType0: vTType,VAttrL0: vAttrL] :
( vmatchingAttrL(VTType0,VAttrL0)
=> ( ( ( VTType0 = vttempty )
& ( VAttrL0 = vaempty ) )
| ? [Vttr: vTType,Va1: vName,VwildcardName0: vFType,Va2: vName,Val: vAttrL] :
( ( VTType0 = vttcons(Va1,VwildcardName0,Vttr) )
& ( VAttrL0 = vacons(Va2,Val) )
& ( Va1 = Va2 )
& vmatchingAttrL(Vttr,Val) ) ) ) ).
tff('matchingAttrL-false-INV',axiom,
! [VTType0: vTType,VAttrL0: vAttrL] :
( ~ vmatchingAttrL(VTType0,VAttrL0)
=> ( ? [Vttr: vTType,Va1: vName,VwildcardName0: vFType,Va2: vName,Val: vAttrL] :
( ( VTType0 = vttcons(Va1,VwildcardName0,Vttr) )
& ( VAttrL0 = vacons(Va2,Val) )
& ~ ( ( Va1 = Va2 )
& vmatchingAttrL(Vttr,Val) ) )
| ? [VwildcardName0: vTType,VwildcardName1: vAttrL] :
( ( ( VwildcardName0 != vttempty )
| ( VwildcardName1 != vaempty ) )
& ( ! [Va10: vName,VwildcardName00: vFType,Vttr0: vTType] : ( VwildcardName0 != vttcons(Va10,VwildcardName00,Vttr0) )
| ! [Va20: vName,Val0: vAttrL] : ( VwildcardName1 != vacons(Va20,Val0) ) )
& ( VTType0 = VwildcardName0 )
& ( VAttrL0 = VwildcardName1 ) ) ) ) ).
tff('welltypedRow-0',axiom,
vwelltypedRow(vttempty,vrempty) ).
tff('welltypedRow-1',axiom,
! [Vv: vVal,Vttr: vTType,Vft: vFType,VwildcardName0: vName,Vr: vRow] :
( vwelltypedRow(vttcons(VwildcardName0,Vft,Vttr),vrcons(Vv,Vr))
<=> ( ( vfieldType(Vv) = Vft )
& vwelltypedRow(Vttr,Vr) ) ) ).
tff('welltypedRow-2',axiom,
! [VwildcardName0: vTType,VwildcardName1: vRow] :
( ( ( ( VwildcardName0 != vttempty )
| ( VwildcardName1 != vrempty ) )
& ( ! [VwildcardName00: vName,Vft0: vFType,Vttr0: vTType] : ( VwildcardName0 != vttcons(VwildcardName00,Vft0,Vttr0) )
| ! [Vv0: vVal,Vr0: vRow] : ( VwildcardName1 != vrcons(Vv0,Vr0) ) ) )
=> ~ vwelltypedRow(VwildcardName0,VwildcardName1) ) ).
tff('welltypedRow-true-INV',axiom,
! [VTType0: vTType,VRow0: vRow] :
( vwelltypedRow(VTType0,VRow0)
=> ( ( ( VTType0 = vttempty )
& ( VRow0 = vrempty ) )
| ? [Vv: vVal,Vttr: vTType,Vft: vFType,VwildcardName0: vName,Vr: vRow] :
( ( VTType0 = vttcons(VwildcardName0,Vft,Vttr) )
& ( VRow0 = vrcons(Vv,Vr) )
& ( vfieldType(Vv) = Vft )
& vwelltypedRow(Vttr,Vr) ) ) ) ).
tff('welltypedRow-false-INV',axiom,
! [VTType0: vTType,VRow0: vRow] :
( ~ vwelltypedRow(VTType0,VRow0)
=> ( ? [Vv: vVal,Vttr: vTType,Vft: vFType,VwildcardName0: vName,Vr: vRow] :
( ( VTType0 = vttcons(VwildcardName0,Vft,Vttr) )
& ( VRow0 = vrcons(Vv,Vr) )
& ~ ( ( vfieldType(Vv) = Vft )
& vwelltypedRow(Vttr,Vr) ) )
| ? [VwildcardName0: vTType,VwildcardName1: vRow] :
( ( ( VwildcardName0 != vttempty )
| ( VwildcardName1 != vrempty ) )
& ( ! [VwildcardName00: vName,Vft0: vFType,Vttr0: vTType] : ( VwildcardName0 != vttcons(VwildcardName00,Vft0,Vttr0) )
| ! [Vv0: vVal,Vr0: vRow] : ( VwildcardName1 != vrcons(Vv0,Vr0) ) )
& ( VTType0 = VwildcardName0 )
& ( VRow0 = VwildcardName1 ) ) ) ) ).
tff('welltypedRawtable-0',axiom,
! [VwildcardName0: vTType] : vwelltypedRawtable(VwildcardName0,vtempty) ).
tff('welltypedRawtable-1',axiom,
! [Vtt: vTType,Vr: vRow,Vt1: vRawTable] :
( vwelltypedRawtable(Vtt,vtcons(Vr,Vt1))
<=> ( vwelltypedRow(Vtt,Vr)
& vwelltypedRawtable(Vtt,Vt1) ) ) ).
tff('welltypedRawtable-true-INV',axiom,
! [VTType0: vTType,VRawTable0: vRawTable] :
( vwelltypedRawtable(VTType0,VRawTable0)
=> ( ? [VwildcardName0: vTType] :
( ( VTType0 = VwildcardName0 )
& ( VRawTable0 = vtempty ) )
| ? [Vr: vRow,Vt1: vRawTable,Vtt: vTType] :
( ( VTType0 = Vtt )
& ( VRawTable0 = vtcons(Vr,Vt1) )
& vwelltypedRow(Vtt,Vr)
& vwelltypedRawtable(Vtt,Vt1) ) ) ) ).
tff('welltypedRawtable-false-INV',axiom,
! [VTType0: vTType,VRawTable0: vRawTable] :
( ~ vwelltypedRawtable(VTType0,VRawTable0)
=> ? [Vr: vRow,Vt1: vRawTable,Vtt: vTType] :
( ( VTType0 = Vtt )
& ( VRawTable0 = vtcons(Vr,Vt1) )
& ~ ( vwelltypedRow(Vtt,Vr)
& vwelltypedRawtable(Vtt,Vt1) ) ) ) ).
tff('welltypedtable-0',axiom,
! [Vtt: vTType,Val: vAttrL,Vt1: vRawTable] :
( vwelltypedtable(Vtt,vtable(Val,Vt1))
<=> ( vmatchingAttrL(Vtt,Val)
& vwelltypedRawtable(Vtt,Vt1) ) ) ).
tff('welltypedtable-true-INV',axiom,
! [VTType0: vTType,VTable0: vTable] :
( vwelltypedtable(VTType0,VTable0)
=> ? [Vtt: vTType,Val: vAttrL,Vt1: vRawTable] :
( ( VTType0 = Vtt )
& ( VTable0 = vtable(Val,Vt1) )
& vmatchingAttrL(Vtt,Val)
& vwelltypedRawtable(Vtt,Vt1) ) ) ).
tff('welltypedtable-false-INV',axiom,
! [VTType0: vTType,VTable0: vTable] :
( ~ vwelltypedtable(VTType0,VTable0)
=> ? [Vtt: vTType,Val: vAttrL,Vt1: vRawTable] :
( ( VTType0 = Vtt )
& ( VTable0 = vtable(Val,Vt1) )
& ~ ( vmatchingAttrL(Vtt,Val)
& vwelltypedRawtable(Vtt,Vt1) ) ) ) ).
tff('rowIn-0',axiom,
! [VwildcardName0: vRow] : ~ vrowIn(VwildcardName0,vtempty) ).
tff('rowIn-1',axiom,
! [Vr1: vRow,Vr2: vRow,Vrt2: vRawTable] :
( vrowIn(Vr1,vtcons(Vr2,Vrt2))
<=> ( ( Vr1 = Vr2 )
| vrowIn(Vr1,Vrt2) ) ) ).
tff('rowIn-true-INV',axiom,
! [VRow0: vRow,VRawTable0: vRawTable] :
( vrowIn(VRow0,VRawTable0)
=> ? [Vr2: vRow,Vrt2: vRawTable,Vr1: vRow] :
( ( VRow0 = Vr1 )
& ( VRawTable0 = vtcons(Vr2,Vrt2) )
& ( ( Vr1 = Vr2 )
| vrowIn(Vr1,Vrt2) ) ) ) ).
tff('rowIn-false-INV',axiom,
! [VRow0: vRow,VRawTable0: vRawTable] :
( ~ vrowIn(VRow0,VRawTable0)
=> ( ? [VwildcardName0: vRow] :
( ( VRow0 = VwildcardName0 )
& ( VRawTable0 = vtempty ) )
| ? [Vr2: vRow,Vrt2: vRawTable,Vr1: vRow] :
( ( VRow0 = Vr1 )
& ( VRawTable0 = vtcons(Vr2,Vrt2) )
& ~ ( ( Vr1 = Vr2 )
| vrowIn(Vr1,Vrt2) ) ) ) ) ).
tff('projectFirstRaw-0',axiom,
vprojectFirstRaw(vtempty) = vtempty ).
tff('projectFirstRaw-1',axiom,
! [Vrt1: vRawTable] : ( vprojectFirstRaw(vtcons(vrempty,Vrt1)) = vtcons(vrempty,vprojectFirstRaw(Vrt1)) ) ).
tff('projectFirstRaw-2',axiom,
! [Vf: vVal,VwildcardName0: vRow,Vrt1: vRawTable] : ( vprojectFirstRaw(vtcons(vrcons(Vf,VwildcardName0),Vrt1)) = vtcons(vrcons(Vf,vrempty),vprojectFirstRaw(Vrt1)) ) ).
tff('projectFirstRaw-INV',axiom,
! [VRawTable0: vRawTable] :
( ( ( VRawTable0 = vtempty )
& ( vprojectFirstRaw(VRawTable0) = vtempty ) )
| ? [Vrt10: vRawTable] :
( ( VRawTable0 = vtcons(vrempty,Vrt10) )
& ( vprojectFirstRaw(VRawTable0) = vtcons(vrempty,vprojectFirstRaw(Vrt10)) ) )
| ? [Vf0: vVal,VwildcardName00: vRow,Vrt11: vRawTable] :
( ( VRawTable0 = vtcons(vrcons(Vf0,VwildcardName00),Vrt11) )
& ( vprojectFirstRaw(VRawTable0) = vtcons(vrcons(Vf0,vrempty),vprojectFirstRaw(Vrt11)) ) ) ) ).
tff('dropFirstColRaw-0',axiom,
vdropFirstColRaw(vtempty) = vtempty ).
tff('dropFirstColRaw-1',axiom,
! [Vrt1: vRawTable] : ( vdropFirstColRaw(vtcons(vrempty,Vrt1)) = vtcons(vrempty,vdropFirstColRaw(Vrt1)) ) ).
tff('dropFirstColRaw-2',axiom,
! [VwildcardName0: vVal,Vrr: vRow,Vrt1: vRawTable] : ( vdropFirstColRaw(vtcons(vrcons(VwildcardName0,Vrr),Vrt1)) = vtcons(Vrr,vdropFirstColRaw(Vrt1)) ) ).
tff('dropFirstColRaw-INV',axiom,
! [VRawTable0: vRawTable] :
( ( ( VRawTable0 = vtempty )
& ( vdropFirstColRaw(VRawTable0) = vtempty ) )
| ? [Vrt10: vRawTable] :
( ( VRawTable0 = vtcons(vrempty,Vrt10) )
& ( vdropFirstColRaw(VRawTable0) = vtcons(vrempty,vdropFirstColRaw(Vrt10)) ) )
| ? [VwildcardName00: vVal,Vrr0: vRow,Vrt11: vRawTable] :
( ( VRawTable0 = vtcons(vrcons(VwildcardName00,Vrr0),Vrt11) )
& ( vdropFirstColRaw(VRawTable0) = vtcons(Vrr0,vdropFirstColRaw(Vrt11)) ) ) ) ).
tff('isSomeRawTable-0',axiom,
~ visSomeRawTable(vnoRawTable) ).
tff('isSomeRawTable-1',axiom,
! [VwildcardName0: vRawTable] : visSomeRawTable(vsomeRawTable(VwildcardName0)) ).
tff('isSomeRawTable-true-INV',axiom,
! [VOptRawTable0: vOptRawTable] :
( visSomeRawTable(VOptRawTable0)
=> ? [VwildcardName0: vRawTable] : ( VOptRawTable0 = vsomeRawTable(VwildcardName0) ) ) ).
tff('isSomeRawTable-false-INV',axiom,
! [VOptRawTable0: vOptRawTable] :
( ~ visSomeRawTable(VOptRawTable0)
=> ( VOptRawTable0 = vnoRawTable ) ) ).
tff('sameLength-0',axiom,
vsameLength(vtempty,vtempty) ).
tff('sameLength-1',axiom,
! [VwildcardName0: vRow,Vtll: vRawTable,VwildcardName1: vRow,Vtlr: vRawTable] :
( vsameLength(vtcons(VwildcardName0,Vtll),vtcons(VwildcardName1,Vtlr))
<=> vsameLength(Vtll,Vtlr) ) ).
tff('sameLength-2',axiom,
! [VwildcardName0: vRawTable,VwildcardName1: vRawTable] :
( ( ( ( VwildcardName0 != vtempty )
| ( VwildcardName1 != vtempty ) )
& ( ! [VwildcardName00: vRow,Vtll0: vRawTable] : ( VwildcardName0 != vtcons(VwildcardName00,Vtll0) )
| ! [VwildcardName10: vRow,Vtlr0: vRawTable] : ( VwildcardName1 != vtcons(VwildcardName10,Vtlr0) ) ) )
=> ~ vsameLength(VwildcardName0,VwildcardName1) ) ).
tff('sameLength-true-INV',axiom,
! [VRawTable0: vRawTable,VRawTable1: vRawTable] :
( vsameLength(VRawTable0,VRawTable1)
=> ( ( ( VRawTable0 = vtempty )
& ( VRawTable1 = vtempty ) )
| ? [VwildcardName0: vRow,Vtll: vRawTable,VwildcardName1: vRow,Vtlr: vRawTable] :
( ( VRawTable0 = vtcons(VwildcardName0,Vtll) )
& ( VRawTable1 = vtcons(VwildcardName1,Vtlr) )
& vsameLength(Vtll,Vtlr) ) ) ) ).
tff('sameLength-false-INV',axiom,
! [VRawTable0: vRawTable,VRawTable1: vRawTable] :
( ~ vsameLength(VRawTable0,VRawTable1)
=> ( ? [VwildcardName0: vRow,Vtll: vRawTable,VwildcardName1: vRow,Vtlr: vRawTable] :
( ( VRawTable0 = vtcons(VwildcardName0,Vtll) )
& ( VRawTable1 = vtcons(VwildcardName1,Vtlr) )
& ~ vsameLength(Vtll,Vtlr) )
| ? [VwildcardName0: vRawTable,VwildcardName1: vRawTable] :
( ( ( VwildcardName0 != vtempty )
| ( VwildcardName1 != vtempty ) )
& ( ! [VwildcardName00: vRow,Vtll0: vRawTable] : ( VwildcardName0 != vtcons(VwildcardName00,Vtll0) )
| ! [VwildcardName10: vRow,Vtlr0: vRawTable] : ( VwildcardName1 != vtcons(VwildcardName10,Vtlr0) ) )
& ( VRawTable0 = VwildcardName0 )
& ( VRawTable1 = VwildcardName1 ) ) ) ) ).
tff('attachColToFrontRaw-0',axiom,
vattachColToFrontRaw(vtempty,vtempty) = vtempty ).
tff('attachColToFrontRaw-1',axiom,
! [Vf: vVal,Vrt1r: vRawTable,Vr: vRow,Vrt2r: vRawTable] : ( vattachColToFrontRaw(vtcons(vrcons(Vf,vrempty),Vrt1r),vtcons(Vr,Vrt2r)) = vtcons(vrcons(Vf,Vr),vattachColToFrontRaw(Vrt1r,Vrt2r)) ) ).
tff('attachColToFrontRaw-2',axiom,
! [VwildcardName0: vRawTable,VwildcardName1: vRawTable] :
( ( ( ( VwildcardName0 != vtempty )
| ( VwildcardName1 != vtempty ) )
& ( ! [Vf0: vVal,Vrt1r0: vRawTable] : ( VwildcardName0 != vtcons(vrcons(Vf0,vrempty),Vrt1r0) )
| ! [Vr0: vRow,Vrt2r0: vRawTable] : ( VwildcardName1 != vtcons(Vr0,Vrt2r0) ) ) )
=> ( vattachColToFrontRaw(VwildcardName0,VwildcardName1) = vtcons(vrempty,vtempty) ) ) ).
tff('attachColToFrontRaw-INV',axiom,
! [VRawTable0: vRawTable,VRawTable1: vRawTable] :
( ( ( VRawTable0 = vtempty )
& ( VRawTable1 = vtempty )
& ( vattachColToFrontRaw(VRawTable0,VRawTable1) = vtempty ) )
| ? [Vf0: vVal,Vrt1r0: vRawTable,Vr0: vRow,Vrt2r0: vRawTable] :
( ( VRawTable0 = vtcons(vrcons(Vf0,vrempty),Vrt1r0) )
& ( VRawTable1 = vtcons(Vr0,Vrt2r0) )
& ( vattachColToFrontRaw(VRawTable0,VRawTable1) = vtcons(vrcons(Vf0,Vr0),vattachColToFrontRaw(Vrt1r0,Vrt2r0)) ) )
| ? [VwildcardName00: vRawTable,VwildcardName10: vRawTable] :
( ( ( VwildcardName00 != vtempty )
| ( VwildcardName10 != vtempty ) )
& ( ! [Vf000: vVal,Vrt1r000: vRawTable] : ( VwildcardName00 != vtcons(vrcons(Vf000,vrempty),Vrt1r000) )
| ! [Vr000: vRow,Vrt2r000: vRawTable] : ( VwildcardName10 != vtcons(Vr000,Vrt2r000) ) )
& ( VRawTable0 = VwildcardName00 )
& ( VRawTable1 = VwildcardName10 )
& ( vattachColToFrontRaw(VRawTable0,VRawTable1) = vtcons(vrempty,vtempty) ) ) ) ).
tff('rawUnion-0',axiom,
! [Vrt: vRawTable] : ( vrawUnion(vtempty,Vrt) = Vrt ) ).
tff('rawUnion-1',axiom,
! [Vr: vRow,Vrt1: vRawTable,Vrtr: vRawTable] :
( ~ vrowIn(Vr,Vrt1)
=> ( vrawUnion(vtcons(Vr,Vrtr),Vrt1) = vtcons(Vr,vrawUnion(Vrtr,Vrt1)) ) ) ).
tff('rawUnion-2',axiom,
! [Vr: vRow,Vrt1: vRawTable,Vrtr: vRawTable] :
( vrowIn(Vr,Vrt1)
=> ( vrawUnion(vtcons(Vr,Vrtr),Vrt1) = vrawUnion(Vrtr,Vrt1) ) ) ).
tff('rawUnion-INV',axiom,
! [VRawTable0: vRawTable,VRawTable1: vRawTable] :
( ? [Vrt0: vRawTable] :
( ( VRawTable0 = vtempty )
& ( VRawTable1 = Vrt0 )
& ( vrawUnion(VRawTable0,VRawTable1) = Vrt0 ) )
| ? [Vr0: vRow,Vrtr0: vRawTable,Vurt1rt20: vRawTable,Vrt10: vRawTable] :
( ( Vurt1rt20 = vrawUnion(Vrtr0,Vrt10) )
& ~ vrowIn(Vr0,Vrt10)
& ( VRawTable0 = vtcons(Vr0,Vrtr0) )
& ( VRawTable1 = Vrt10 )
& ( vrawUnion(VRawTable0,VRawTable1) = vtcons(Vr0,Vurt1rt20) ) )
| ? [Vr1: vRow,Vrtr1: vRawTable,Vurt1rt21: vRawTable,Vrt11: vRawTable] :
( ( Vurt1rt21 = vrawUnion(Vrtr1,Vrt11) )
& vrowIn(Vr1,Vrt11)
& ( VRawTable0 = vtcons(Vr1,Vrtr1) )
& ( VRawTable1 = Vrt11 )
& ( vrawUnion(VRawTable0,VRawTable1) = Vurt1rt21 ) ) ) ).
tff('rawIntersection-0',axiom,
! [VwildcardName0: vRawTable] : ( vrawIntersection(vtempty,VwildcardName0) = vtempty ) ).
tff('rawIntersection-1',axiom,
! [Vr: vRow,Vrt1: vRawTable] :
( vrowIn(Vr,Vrt1)
=> ( vrawIntersection(vtcons(Vr,vtempty),Vrt1) = vtcons(Vr,vtempty) ) ) ).
tff('rawIntersection-2',axiom,
! [Vr: vRow,Vrt1: vRawTable] :
( ~ vrowIn(Vr,Vrt1)
=> ( vrawIntersection(vtcons(Vr,vtempty),Vrt1) = vtempty ) ) ).
tff('rawIntersection-3',axiom,
! [Vr: vRow,Vrtr: vRawTable,Vrt1: vRawTable] :
( ( ! [Vr00: vRow] :
( ( Vr != Vr00 )
| ( Vrtr != vtempty ) )
& vrowIn(Vr,Vrt1) )
=> ( vrawIntersection(vtcons(Vr,Vrtr),Vrt1) = vtcons(Vr,vrawIntersection(Vrtr,Vrt1)) ) ) ).
tff('rawIntersection-4',axiom,
! [Vr: vRow,Vrtr: vRawTable,Vrt1: vRawTable] :
( ( ! [Vr00: vRow] :
( ( Vr != Vr00 )
| ( Vrtr != vtempty ) )
& ~ vrowIn(Vr,Vrt1) )
=> ( vrawIntersection(vtcons(Vr,Vrtr),Vrt1) = vrawIntersection(Vrtr,Vrt1) ) ) ).
tff('rawIntersection-INV',axiom,
! [VRawTable0: vRawTable,VRawTable1: vRawTable] :
( ? [VwildcardName00: vRawTable] :
( ( VRawTable0 = vtempty )
& ( VRawTable1 = VwildcardName00 )
& ( vrawIntersection(VRawTable0,VRawTable1) = vtempty ) )
| ? [Vr0: vRow,Vrt10: vRawTable] :
( vrowIn(Vr0,Vrt10)
& ( VRawTable0 = vtcons(Vr0,vtempty) )
& ( VRawTable1 = Vrt10 )
& ( vrawIntersection(VRawTable0,VRawTable1) = vtcons(Vr0,vtempty) ) )
| ? [Vr1: vRow,Vrt11: vRawTable] :
( ~ vrowIn(Vr1,Vrt11)
& ( VRawTable0 = vtcons(Vr1,vtempty) )
& ( VRawTable1 = Vrt11 )
& ( vrawIntersection(VRawTable0,VRawTable1) = vtempty ) )
| ? [Vr2: vRow,Vrtr0: vRawTable,Virt1rt20: vRawTable,Vrt12: vRawTable] :
( ! [Vr000: vRow] :
( ( Vr2 != Vr000 )
| ( Vrtr0 != vtempty ) )
& ( Virt1rt20 = vrawIntersection(Vrtr0,Vrt12) )
& vrowIn(Vr2,Vrt12)
& ( VRawTable0 = vtcons(Vr2,Vrtr0) )
& ( VRawTable1 = Vrt12 )
& ( vrawIntersection(VRawTable0,VRawTable1) = vtcons(Vr2,Virt1rt20) ) )
| ? [Vr3: vRow,Vrtr1: vRawTable,Virt1rt21: vRawTable,Vrt13: vRawTable] :
( ! [Vr010: vRow] :
( ( Vr3 != Vr010 )
| ( Vrtr1 != vtempty ) )
& ( Virt1rt21 = vrawIntersection(Vrtr1,Vrt13) )
& ~ vrowIn(Vr3,Vrt13)
& ( VRawTable0 = vtcons(Vr3,Vrtr1) )
& ( VRawTable1 = Vrt13 )
& ( vrawIntersection(VRawTable0,VRawTable1) = Virt1rt21 ) ) ) ).
tff('rawDifference-0',axiom,
! [VwildcardName0: vRawTable] : ( vrawDifference(vtempty,VwildcardName0) = vtempty ) ).
tff('rawDifference-1',axiom,
! [Vr: vRow,Vrt2: vRawTable] :
( ~ vrowIn(Vr,Vrt2)
=> ( vrawDifference(vtcons(Vr,vtempty),Vrt2) = vtcons(Vr,vtempty) ) ) ).
tff('rawDifference-2',axiom,
! [Vr: vRow,Vrt2: vRawTable] :
( vrowIn(Vr,Vrt2)
=> ( vrawDifference(vtcons(Vr,vtempty),Vrt2) = vtempty ) ) ).
tff('rawDifference-3',axiom,
! [Vr: vRow,Vrtr: vRawTable,Vrt2: vRawTable] :
( ( ! [Vr00: vRow] :
( ( Vr != Vr00 )
| ( Vrtr != vtempty ) )
& ~ vrowIn(Vr,Vrt2) )
=> ( vrawDifference(vtcons(Vr,Vrtr),Vrt2) = vtcons(Vr,vrawDifference(Vrtr,Vrt2)) ) ) ).
tff('rawDifference-4',axiom,
! [Vr: vRow,Vrtr: vRawTable,Vrt2: vRawTable] :
( ( ! [Vr00: vRow] :
( ( Vr != Vr00 )
| ( Vrtr != vtempty ) )
& vrowIn(Vr,Vrt2) )
=> ( vrawDifference(vtcons(Vr,Vrtr),Vrt2) = vrawDifference(Vrtr,Vrt2) ) ) ).
tff('rawDifference-INV',axiom,
! [VRawTable0: vRawTable,VRawTable1: vRawTable] :
( ? [VwildcardName00: vRawTable] :
( ( VRawTable0 = vtempty )
& ( VRawTable1 = VwildcardName00 )
& ( vrawDifference(VRawTable0,VRawTable1) = vtempty ) )
| ? [Vr0: vRow,Vrt20: vRawTable] :
( ~ vrowIn(Vr0,Vrt20)
& ( VRawTable0 = vtcons(Vr0,vtempty) )
& ( VRawTable1 = Vrt20 )
& ( vrawDifference(VRawTable0,VRawTable1) = vtcons(Vr0,vtempty) ) )
| ? [Vr1: vRow,Vrt21: vRawTable] :
( vrowIn(Vr1,Vrt21)
& ( VRawTable0 = vtcons(Vr1,vtempty) )
& ( VRawTable1 = Vrt21 )
& ( vrawDifference(VRawTable0,VRawTable1) = vtempty ) )
| ? [Vr2: vRow,Vrtr0: vRawTable,Vdrt1rt20: vRawTable,Vrt22: vRawTable] :
( ! [Vr000: vRow] :
( ( Vr2 != Vr000 )
| ( Vrtr0 != vtempty ) )
& ( Vdrt1rt20 = vrawDifference(Vrtr0,Vrt22) )
& ~ vrowIn(Vr2,Vrt22)
& ( VRawTable0 = vtcons(Vr2,Vrtr0) )
& ( VRawTable1 = Vrt22 )
& ( vrawDifference(VRawTable0,VRawTable1) = vtcons(Vr2,Vdrt1rt20) ) )
| ? [Vr3: vRow,Vrtr1: vRawTable,Vdrt1rt21: vRawTable,Vrt23: vRawTable] :
( ! [Vr010: vRow] :
( ( Vr3 != Vr010 )
| ( Vrtr1 != vtempty ) )
& ( Vdrt1rt21 = vrawDifference(Vrtr1,Vrt23) )
& vrowIn(Vr3,Vrt23)
& ( VRawTable0 = vtcons(Vr3,Vrtr1) )
& ( VRawTable1 = Vrt23 )
& ( vrawDifference(VRawTable0,VRawTable1) = Vdrt1rt21 ) ) ) ).
tff('isSomeTable-0',axiom,
~ visSomeTable(vnoTable) ).
tff('isSomeTable-1',axiom,
! [VwildcardName0: vTable] : visSomeTable(vsomeTable(VwildcardName0)) ).
tff('isSomeTable-true-INV',axiom,
! [VOptTable0: vOptTable] :
( visSomeTable(VOptTable0)
=> ? [VwildcardName0: vTable] : ( VOptTable0 = vsomeTable(VwildcardName0) ) ) ).
tff('isSomeTable-false-INV',axiom,
! [VOptTable0: vOptTable] :
( ~ visSomeTable(VOptTable0)
=> ( VOptTable0 = vnoTable ) ) ).
tff('lookupStore-0',axiom,
! [VwildcardName0: vName] : ( vlookupStore(VwildcardName0,vemptyStore) = vnoTable ) ).
tff('lookupStore-1',axiom,
! [Vm: vName,Vt: vTable,Vtsr: vTStore] : ( vlookupStore(Vm,vbindStore(Vm,Vt,Vtsr)) = vsomeTable(Vt) ) ).
tff('lookupStore-2',axiom,
! [Vn: vName,Vm: vName,Vt: vTable,Vtsr: vTStore] :
( ( Vn != Vm )
=> ( vlookupStore(Vn,vbindStore(Vm,Vt,Vtsr)) = vlookupStore(Vn,Vtsr) ) ) ).
tff('lookupStore-INV',axiom,
! [VName0: vName,VTStore0: vTStore] :
( ? [VwildcardName00: vName] :
( ( VName0 = VwildcardName00 )
& ( VTStore0 = vemptyStore )
& ( vlookupStore(VName0,VTStore0) = vnoTable ) )
| ? [Vm0: vName,Vt0: vTable,Vtsr0: vTStore,Vn0: vName] :
( ( Vn0 = Vm0 )
& ( VName0 = Vn0 )
& ( VTStore0 = vbindStore(Vm0,Vt0,Vtsr0) )
& ( vlookupStore(VName0,VTStore0) = vsomeTable(Vt0) ) )
| ? [Vm1: vName,Vt1: vTable,Vtsr1: vTStore,Vn1: vName] :
( ( Vn1 != Vm1 )
& ( VName0 = Vn1 )
& ( VTStore0 = vbindStore(Vm1,Vt1,Vtsr1) )
& ( vlookupStore(VName0,VTStore0) = vlookupStore(Vn1,Vtsr1) ) ) ) ).
tff('isSomeTType-0',axiom,
~ visSomeTType(vnoTType) ).
tff('isSomeTType-1',axiom,
! [VwildcardName0: vTType] : visSomeTType(vsomeTType(VwildcardName0)) ).
tff('isSomeTType-true-INV',axiom,
! [VOptTType0: vOptTType] :
( visSomeTType(VOptTType0)
=> ? [VwildcardName0: vTType] : ( VOptTType0 = vsomeTType(VwildcardName0) ) ) ).
tff('isSomeTType-false-INV',axiom,
! [VOptTType0: vOptTType] :
( ~ visSomeTType(VOptTType0)
=> ( VOptTType0 = vnoTType ) ) ).
tff('lookupContext-0',axiom,
! [VwildcardName0: vName] : ( vlookupContext(VwildcardName0,vemptyContext) = vnoTType ) ).
tff('lookupContext-1',axiom,
! [Vm: vName,Vtt: vTType,Vttcr: vTTContext] : ( vlookupContext(Vm,vbindContext(Vm,Vtt,Vttcr)) = vsomeTType(Vtt) ) ).
tff('lookupContext-2',axiom,
! [Vn: vName,Vm: vName,Vtt: vTType,Vttcr: vTTContext] :
( ( Vn != Vm )
=> ( vlookupContext(Vn,vbindContext(Vm,Vtt,Vttcr)) = vlookupContext(Vn,Vttcr) ) ) ).
tff('lookupContext-INV',axiom,
! [VName0: vName,VTTContext0: vTTContext] :
( ? [VwildcardName00: vName] :
( ( VName0 = VwildcardName00 )
& ( VTTContext0 = vemptyContext )
& ( vlookupContext(VName0,VTTContext0) = vnoTType ) )
| ? [Vm0: vName,Vtt0: vTType,Vttcr0: vTTContext,Vn0: vName] :
( ( Vn0 = Vm0 )
& ( VName0 = Vn0 )
& ( VTTContext0 = vbindContext(Vm0,Vtt0,Vttcr0) )
& ( vlookupContext(VName0,VTTContext0) = vsomeTType(Vtt0) ) )
| ? [Vm1: vName,Vtt1: vTType,Vttcr1: vTTContext,Vn1: vName] :
( ( Vn1 != Vm1 )
& ( VName0 = Vn1 )
& ( VTTContext0 = vbindContext(Vm1,Vtt1,Vttcr1) )
& ( vlookupContext(VName0,VTTContext0) = vlookupContext(Vn1,Vttcr1) ) ) ) ).
tff('isValue-0',axiom,
! [VwildcardName0: vTable] : visValue(vtvalue(VwildcardName0)) ).
tff('isValue-1',axiom,
! [VwildcardName0: vSelect,VwildcardName1: vName,VwildcardName2: vPred] : ~ visValue(vselectFromWhere(VwildcardName0,VwildcardName1,VwildcardName2)) ).
tff('isValue-2',axiom,
! [VwildcardName0: vQuery,VwildcardName1: vQuery] : ~ visValue(vUnion(VwildcardName0,VwildcardName1)) ).
tff('isValue-3',axiom,
! [VwildcardName0: vQuery,VwildcardName1: vQuery] : ~ visValue(vIntersection(VwildcardName0,VwildcardName1)) ).
tff('isValue-4',axiom,
! [VwildcardName0: vQuery,VwildcardName1: vQuery] : ~ visValue(vDifference(VwildcardName0,VwildcardName1)) ).
tff('isValue-true-INV',axiom,
! [VQuery0: vQuery] :
( visValue(VQuery0)
=> ? [VwildcardName0: vTable] : ( VQuery0 = vtvalue(VwildcardName0) ) ) ).
tff('isValue-false-INV',axiom,
! [VQuery0: vQuery] :
( ~ visValue(VQuery0)
=> ( ? [VwildcardName0: vSelect,VwildcardName1: vName,VwildcardName2: vPred] : ( VQuery0 = vselectFromWhere(VwildcardName0,VwildcardName1,VwildcardName2) )
| ? [VwildcardName0: vQuery,VwildcardName1: vQuery] : ( VQuery0 = vUnion(VwildcardName0,VwildcardName1) )
| ? [VwildcardName0: vQuery,VwildcardName1: vQuery] : ( VQuery0 = vIntersection(VwildcardName0,VwildcardName1) )
| ? [VwildcardName0: vQuery,VwildcardName1: vQuery] : ( VQuery0 = vDifference(VwildcardName0,VwildcardName1) ) ) ) ).
tff('isSomeQuery-0',axiom,
~ visSomeQuery(vnoQuery) ).
tff('isSomeQuery-1',axiom,
! [VwildcardName0: vQuery] : visSomeQuery(vsomeQuery(VwildcardName0)) ).
tff('isSomeQuery-true-INV',axiom,
! [VOptQuery0: vOptQuery] :
( visSomeQuery(VOptQuery0)
=> ? [VwildcardName0: vQuery] : ( VOptQuery0 = vsomeQuery(VwildcardName0) ) ) ).
tff('isSomeQuery-false-INV',axiom,
! [VOptQuery0: vOptQuery] :
( ~ visSomeQuery(VOptQuery0)
=> ( VOptQuery0 = vnoQuery ) ) ).
tff('findCol-0',axiom,
! [Vn: vName,VwildcardName0: vRawTable] : ( vfindCol(Vn,vaempty,VwildcardName0) = vnoRawTable ) ).
tff('findCol-1',axiom,
! [Vn1: vName,Valr: vAttrL,Vrtr: vRawTable] : ( vfindCol(Vn1,vacons(Vn1,Valr),Vrtr) = vsomeRawTable(vprojectFirstRaw(Vrtr)) ) ).
tff('findCol-2',axiom,
! [Vn: vName,Vn1: vName,Valr: vAttrL,Vrtr: vRawTable] :
( ( Vn != Vn1 )
=> ( vfindCol(Vn,vacons(Vn1,Valr),Vrtr) = vfindCol(Vn,Valr,vdropFirstColRaw(Vrtr)) ) ) ).
tff('findCol-INV',axiom,
! [VName0: vName,VAttrL0: vAttrL,VRawTable0: vRawTable] :
( ? [Vn0: vName,VwildcardName00: vRawTable] :
( ( VName0 = Vn0 )
& ( VAttrL0 = vaempty )
& ( VRawTable0 = VwildcardName00 )
& ( vfindCol(VName0,VAttrL0,VRawTable0) = vnoRawTable ) )
| ? [Vn10: vName,Valr0: vAttrL,Vn11: vName,Vrtr0: vRawTable] :
( ( Vn11 = Vn10 )
& ( VName0 = Vn11 )
& ( VAttrL0 = vacons(Vn10,Valr0) )
& ( VRawTable0 = Vrtr0 )
& ( vfindCol(VName0,VAttrL0,VRawTable0) = vsomeRawTable(vprojectFirstRaw(Vrtr0)) ) )
| ? [Vn12: vName,Valr1: vAttrL,Vn2: vName,Vrtr1: vRawTable] :
( ( Vn2 != Vn12 )
& ( VName0 = Vn2 )
& ( VAttrL0 = vacons(Vn12,Valr1) )
& ( VRawTable0 = Vrtr1 )
& ( vfindCol(VName0,VAttrL0,VRawTable0) = vfindCol(Vn2,Valr1,vdropFirstColRaw(Vrtr1)) ) ) ) ).
tff('projectEmptyCol-0',axiom,
vprojectEmptyCol(vtempty) = vtempty ).
tff('projectEmptyCol-1',axiom,
! [VwildcardName0: vRow,Vt: vRawTable] : ( vprojectEmptyCol(vtcons(VwildcardName0,Vt)) = vtcons(vrempty,vprojectEmptyCol(Vt)) ) ).
tff('projectEmptyCol-INV',axiom,
! [VRawTable0: vRawTable] :
( ( ( VRawTable0 = vtempty )
& ( vprojectEmptyCol(VRawTable0) = vtempty ) )
| ? [VwildcardName00: vRow,Vt0: vRawTable] :
( ( VRawTable0 = vtcons(VwildcardName00,Vt0) )
& ( vprojectEmptyCol(VRawTable0) = vtcons(vrempty,vprojectEmptyCol(Vt0)) ) ) ) ).
tff('projectCols-0',axiom,
! [VwildcardName0: vAttrL,Vrt: vRawTable] : ( vprojectCols(vaempty,VwildcardName0,Vrt) = vsomeRawTable(vprojectEmptyCol(Vrt)) ) ).
tff('projectCols-1',axiom,
! [Vn: vName,Val1: vAttrL,Vrt: vRawTable,Val2: vAttrL] :
( ( visSomeRawTable(vfindCol(Vn,Val1,Vrt))
& visSomeRawTable(vprojectCols(Val2,Val1,Vrt)) )
=> ( vprojectCols(vacons(Vn,Val2),Val1,Vrt) = vsomeRawTable(vattachColToFrontRaw(vgetRawTable(vfindCol(Vn,Val1,Vrt)),vgetRawTable(vprojectCols(Val2,Val1,Vrt)))) ) ) ).
tff('projectCols-2',axiom,
! [Vn: vName,Val1: vAttrL,Vrt: vRawTable,Val2: vAttrL] :
( ~ ( visSomeRawTable(vfindCol(Vn,Val1,Vrt))
& visSomeRawTable(vprojectCols(Val2,Val1,Vrt)) )
=> ( vprojectCols(vacons(Vn,Val2),Val1,Vrt) = vnoRawTable ) ) ).
tff('projectCols-INV',axiom,
! [VAttrL0: vAttrL,VAttrL1: vAttrL,VRawTable0: vRawTable] :
( ? [VwildcardName00: vAttrL,Vrt0: vRawTable] :
( ( VAttrL0 = vaempty )
& ( VAttrL1 = VwildcardName00 )
& ( VRawTable0 = Vrt0 )
& ( vprojectCols(VAttrL0,VAttrL1,VRawTable0) = vsomeRawTable(vprojectEmptyCol(Vrt0)) ) )
| ? [Vrt1: vRawTable,Vrest0: vOptRawTable,Vcol0: vOptRawTable,Val10: vAttrL,Val20: vAttrL,Vn0: vName] :
( ( Vcol0 = vfindCol(Vn0,Val10,Vrt1) )
& ( Vrest0 = vprojectCols(Val20,Val10,Vrt1) )
& visSomeRawTable(Vcol0)
& visSomeRawTable(Vrest0)
& ( VAttrL0 = vacons(Vn0,Val20) )
& ( VAttrL1 = Val10 )
& ( VRawTable0 = Vrt1 )
& ( vprojectCols(VAttrL0,VAttrL1,VRawTable0) = vsomeRawTable(vattachColToFrontRaw(vgetRawTable(Vcol0),vgetRawTable(Vrest0))) ) )
| ? [Vrt2: vRawTable,Vrest1: vOptRawTable,Vcol1: vOptRawTable,Val11: vAttrL,Val21: vAttrL,Vn1: vName] :
( ( Vcol1 = vfindCol(Vn1,Val11,Vrt2) )
& ( Vrest1 = vprojectCols(Val21,Val11,Vrt2) )
& ~ ( visSomeRawTable(Vcol1)
& visSomeRawTable(Vrest1) )
& ( VAttrL0 = vacons(Vn1,Val21) )
& ( VAttrL1 = Val11 )
& ( VRawTable0 = Vrt2 )
& ( vprojectCols(VAttrL0,VAttrL1,VRawTable0) = vnoRawTable ) ) ) ).
tff('projectTable-0',axiom,
! [Vt: vTable] : ( vprojectTable(vall,Vt) = vsomeTable(Vt) ) ).
tff('projectTable-1',axiom,
! [Val: vAttrL,Vt: vTable] :
( visSomeRawTable(vprojectCols(Val,vgetAttrL(Vt),vgetRaw(Vt)))
=> ( vprojectTable(vlist(Val),Vt) = vsomeTable(vtable(Val,vgetRawTable(vprojectCols(Val,vgetAttrL(Vt),vgetRaw(Vt))))) ) ) ).
tff('projectTable-2',axiom,
! [Val: vAttrL,Vt: vTable] :
( ~ visSomeRawTable(vprojectCols(Val,vgetAttrL(Vt),vgetRaw(Vt)))
=> ( vprojectTable(vlist(Val),Vt) = vnoTable ) ) ).
tff('projectTable-INV',axiom,
! [VSelect0: vSelect,VTable0: vTable] :
( ? [Vt0: vTable] :
( ( VSelect0 = vall )
& ( VTable0 = Vt0 )
& ( vprojectTable(VSelect0,VTable0) = vsomeTable(Vt0) ) )
| ? [Val0: vAttrL,Vprojected0: vOptRawTable,Vt1: vTable] :
( ( Vprojected0 = vprojectCols(Val0,vgetAttrL(Vt1),vgetRaw(Vt1)) )
& visSomeRawTable(Vprojected0)
& ( VSelect0 = vlist(Val0) )
& ( VTable0 = Vt1 )
& ( vprojectTable(VSelect0,VTable0) = vsomeTable(vtable(Val0,vgetRawTable(Vprojected0))) ) )
| ? [Val1: vAttrL,Vprojected1: vOptRawTable,Vt2: vTable] :
( ( Vprojected1 = vprojectCols(Val1,vgetAttrL(Vt2),vgetRaw(Vt2)) )
& ~ visSomeRawTable(Vprojected1)
& ( VSelect0 = vlist(Val1) )
& ( VTable0 = Vt2 )
& ( vprojectTable(VSelect0,VTable0) = vnoTable ) ) ) ).
tff('isSomeVal-0',axiom,
~ visSomeVal(vnoVal) ).
tff('isSomeVal-1',axiom,
! [VwildcardName0: vVal] : visSomeVal(vsomeVal(VwildcardName0)) ).
tff('isSomeVal-true-INV',axiom,
! [VOptVal0: vOptVal] :
( visSomeVal(VOptVal0)
=> ? [VwildcardName0: vVal] : ( VOptVal0 = vsomeVal(VwildcardName0) ) ) ).
tff('isSomeVal-false-INV',axiom,
! [VOptVal0: vOptVal] :
( ~ visSomeVal(VOptVal0)
=> ( VOptVal0 = vnoVal ) ) ).
tff('evalExpRow-0',axiom,
! [Vv: vVal,VwildcardName0: vAttrL,VwildcardName1: vRow] : ( vevalExpRow(vconstant(Vv),VwildcardName0,VwildcardName1) = vsomeVal(Vv) ) ).
tff('evalExpRow-1',axiom,
! [Va2: vName,Val: vAttrL,Vv: vVal,Vr: vRow] : ( vevalExpRow(vlookup(Va2),vacons(Va2,Val),vrcons(Vv,Vr)) = vsomeVal(Vv) ) ).
tff('evalExpRow-2',axiom,
! [Vv: vVal,Va: vName,Va2: vName,Vr: vRow,Val: vAttrL] :
( ( Va != Va2 )
=> ( vevalExpRow(vlookup(Va),vacons(Va2,Val),vrcons(Vv,Vr)) = vevalExpRow(vlookup(Va),Val,Vr) ) ) ).
tff('evalExpRow-3',axiom,
! [VwildcardName0: vExp,VwildcardName1: vAttrL,VwildcardName2: vRow] :
( ( ! [Vv0: vVal] : ( VwildcardName0 != vconstant(Vv0) )
& ( ! [Va0: vName] : ( VwildcardName0 != vlookup(Va0) )
| ! [Va20: vName,Val0: vAttrL] : ( VwildcardName1 != vacons(Va20,Val0) )
| ! [Vv0: vVal,Vr0: vRow] : ( VwildcardName2 != vrcons(Vv0,Vr0) ) ) )
=> ( vevalExpRow(VwildcardName0,VwildcardName1,VwildcardName2) = vnoVal ) ) ).
tff('evalExpRow-INV',axiom,
! [VExp0: vExp,VAttrL0: vAttrL,VRow0: vRow] :
( ? [Vv0: vVal,VwildcardName00: vAttrL,VwildcardName10: vRow] :
( ( VExp0 = vconstant(Vv0) )
& ( VAttrL0 = VwildcardName00 )
& ( VRow0 = VwildcardName10 )
& ( vevalExpRow(VExp0,VAttrL0,VRow0) = vsomeVal(Vv0) ) )
| ? [Vv1: vVal,Va0: vName,Va20: vName,Vr0: vRow,Val0: vAttrL] :
( ( Va0 = Va20 )
& ( VExp0 = vlookup(Va0) )
& ( VAttrL0 = vacons(Va20,Val0) )
& ( VRow0 = vrcons(Vv1,Vr0) )
& ( vevalExpRow(VExp0,VAttrL0,VRow0) = vsomeVal(Vv1) ) )
| ? [Vv2: vVal,Va1: vName,Va21: vName,Vr1: vRow,Val1: vAttrL] :
( ( Va1 != Va21 )
& ( VExp0 = vlookup(Va1) )
& ( VAttrL0 = vacons(Va21,Val1) )
& ( VRow0 = vrcons(Vv2,Vr1) )
& ( vevalExpRow(VExp0,VAttrL0,VRow0) = vevalExpRow(vlookup(Va1),Val1,Vr1) ) )
| ? [VwildcardName01: vExp,VwildcardName11: vAttrL,VwildcardName20: vRow] :
( ! [Vv000: vVal] : ( VwildcardName01 != vconstant(Vv000) )
& ( ! [Va000: vName] : ( VwildcardName01 != vlookup(Va000) )
| ! [Va2000: vName,Val000: vAttrL] : ( VwildcardName11 != vacons(Va2000,Val000) )
| ! [Vv010: vVal,Vr000: vRow] : ( VwildcardName20 != vrcons(Vv010,Vr000) ) )
& ( VExp0 = VwildcardName01 )
& ( VAttrL0 = VwildcardName11 )
& ( VRow0 = VwildcardName20 )
& ( vevalExpRow(VExp0,VAttrL0,VRow0) = vnoVal ) ) ) ).
tff('filterSingleRow-0',axiom,
! [VwildcardName0: vAttrL,VwildcardName1: vRow] : vfilterSingleRow(vptrue,VwildcardName0,VwildcardName1) ).
tff('filterSingleRow-1',axiom,
! [Vp1: vPred,Vp2: vPred,Val: vAttrL,Vr: vRow] :
( vfilterSingleRow(vand(Vp1,Vp2),Val,Vr)
<=> ( vfilterSingleRow(Vp1,Val,Vr)
& vfilterSingleRow(Vp2,Val,Vr) ) ) ).
tff('filterSingleRow-2',axiom,
! [Vpr: vPred,Val: vAttrL,Vr: vRow] :
( vfilterSingleRow(vnot(Vpr),Val,Vr)
<=> ~ vfilterSingleRow(Vpr,Val,Vr) ) ).
tff('filterSingleRow-3',axiom,
! [Ve1: vExp,Ve2: vExp,Val: vAttrL,Vr: vRow] :
( vfilterSingleRow(veq(Ve1,Ve2),Val,Vr)
<=> ( visSomeVal(vevalExpRow(Ve1,Val,Vr))
& visSomeVal(vevalExpRow(Ve2,Val,Vr))
& ( vgetVal(vevalExpRow(Ve1,Val,Vr)) = vgetVal(vevalExpRow(Ve2,Val,Vr)) ) ) ) ).
tff('filterSingleRow-4',axiom,
! [Ve1: vExp,Ve2: vExp,Val: vAttrL,Vr: vRow] :
( vfilterSingleRow(vgt(Ve1,Ve2),Val,Vr)
<=> ( visSomeVal(vevalExpRow(Ve1,Val,Vr))
& visSomeVal(vevalExpRow(Ve2,Val,Vr))
& vgreaterThan(vgetVal(vevalExpRow(Ve1,Val,Vr)),vgetVal(vevalExpRow(Ve2,Val,Vr))) ) ) ).
tff('filterSingleRow-5',axiom,
! [Ve1: vExp,Ve2: vExp,Val: vAttrL,Vr: vRow] :
( vfilterSingleRow(vlt(Ve1,Ve2),Val,Vr)
<=> ( visSomeVal(vevalExpRow(Ve1,Val,Vr))
& visSomeVal(vevalExpRow(Ve2,Val,Vr))
& vlessThan(vgetVal(vevalExpRow(Ve1,Val,Vr)),vgetVal(vevalExpRow(Ve2,Val,Vr))) ) ) ).
tff('filterSingleRow-true-INV',axiom,
! [VPred0: vPred,VAttrL0: vAttrL,VRow0: vRow] :
( vfilterSingleRow(VPred0,VAttrL0,VRow0)
=> ( ? [VwildcardName0: vAttrL,VwildcardName1: vRow] :
( ( VPred0 = vptrue )
& ( VAttrL0 = VwildcardName0 )
& ( VRow0 = VwildcardName1 ) )
| ? [Vp1: vPred,Vp2: vPred,Val: vAttrL,Vr: vRow] :
( ( VPred0 = vand(Vp1,Vp2) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& vfilterSingleRow(Vp1,Val,Vr)
& vfilterSingleRow(Vp2,Val,Vr) )
| ? [Vpr: vPred,Val: vAttrL,Vr: vRow] :
( ( VPred0 = vnot(Vpr) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& ~ vfilterSingleRow(Vpr,Val,Vr) )
| ? [Ve1: vExp,Vr: vRow,Vv1: vOptVal,Val: vAttrL,Vv2: vOptVal,Ve2: vExp] :
( ( Vv1 = vevalExpRow(Ve1,Val,Vr) )
& ( Vv2 = vevalExpRow(Ve2,Val,Vr) )
& ( VPred0 = veq(Ve1,Ve2) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& visSomeVal(Vv1)
& visSomeVal(Vv2)
& ( vgetVal(Vv1) = vgetVal(Vv2) ) )
| ? [Ve1: vExp,Vr: vRow,Vv1: vOptVal,Val: vAttrL,Vv2: vOptVal,Ve2: vExp] :
( ( Vv1 = vevalExpRow(Ve1,Val,Vr) )
& ( Vv2 = vevalExpRow(Ve2,Val,Vr) )
& ( VPred0 = vgt(Ve1,Ve2) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& visSomeVal(Vv1)
& visSomeVal(Vv2)
& vgreaterThan(vgetVal(Vv1),vgetVal(Vv2)) )
| ? [Ve1: vExp,Vr: vRow,Vv1: vOptVal,Val: vAttrL,Vv2: vOptVal,Ve2: vExp] :
( ( Vv1 = vevalExpRow(Ve1,Val,Vr) )
& ( Vv2 = vevalExpRow(Ve2,Val,Vr) )
& ( VPred0 = vlt(Ve1,Ve2) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& visSomeVal(Vv1)
& visSomeVal(Vv2)
& vlessThan(vgetVal(Vv1),vgetVal(Vv2)) ) ) ) ).
tff('filterSingleRow-false-INV',axiom,
! [VPred0: vPred,VAttrL0: vAttrL,VRow0: vRow] :
( ~ vfilterSingleRow(VPred0,VAttrL0,VRow0)
=> ( ? [Vp1: vPred,Vp2: vPred,Val: vAttrL,Vr: vRow] :
( ( VPred0 = vand(Vp1,Vp2) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& ~ ( vfilterSingleRow(Vp1,Val,Vr)
& vfilterSingleRow(Vp2,Val,Vr) ) )
| ? [Vpr: vPred,Val: vAttrL,Vr: vRow] :
( ( VPred0 = vnot(Vpr) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& vfilterSingleRow(Vpr,Val,Vr) )
| ? [Ve1: vExp,Vr: vRow,Vv1: vOptVal,Val: vAttrL,Vv2: vOptVal,Ve2: vExp] :
( ( Vv1 = vevalExpRow(Ve1,Val,Vr) )
& ( Vv2 = vevalExpRow(Ve2,Val,Vr) )
& ( VPred0 = veq(Ve1,Ve2) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& ~ ( visSomeVal(Vv1)
& visSomeVal(Vv2)
& ( vgetVal(Vv1) = vgetVal(Vv2) ) ) )
| ? [Ve1: vExp,Vr: vRow,Vv1: vOptVal,Val: vAttrL,Vv2: vOptVal,Ve2: vExp] :
( ( Vv1 = vevalExpRow(Ve1,Val,Vr) )
& ( Vv2 = vevalExpRow(Ve2,Val,Vr) )
& ( VPred0 = vgt(Ve1,Ve2) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& ~ ( visSomeVal(Vv1)
& visSomeVal(Vv2)
& vgreaterThan(vgetVal(Vv1),vgetVal(Vv2)) ) )
| ? [Ve1: vExp,Vr: vRow,Vv1: vOptVal,Val: vAttrL,Vv2: vOptVal,Ve2: vExp] :
( ( Vv1 = vevalExpRow(Ve1,Val,Vr) )
& ( Vv2 = vevalExpRow(Ve2,Val,Vr) )
& ( VPred0 = vlt(Ve1,Ve2) )
& ( VAttrL0 = Val )
& ( VRow0 = Vr )
& ~ ( visSomeVal(Vv1)
& visSomeVal(Vv2)
& vlessThan(vgetVal(Vv1),vgetVal(Vv2)) ) ) ) ) ).
tff('filterRows-0',axiom,
! [VwildcardName0: vAttrL,VwildcardName1: vPred] : ( vfilterRows(vtempty,VwildcardName0,VwildcardName1) = vtempty ) ).
tff('filterRows-1',axiom,
! [Vp: vPred,Val: vAttrL,Vr: vRow,Vrtr: vRawTable] :
( vfilterSingleRow(Vp,Val,Vr)
=> ( vfilterRows(vtcons(Vr,Vrtr),Val,Vp) = vtcons(Vr,vfilterRows(Vrtr,Val,Vp)) ) ) ).
tff('filterRows-2',axiom,
! [Vp: vPred,Val: vAttrL,Vr: vRow,Vrtr: vRawTable] :
( ~ vfilterSingleRow(Vp,Val,Vr)
=> ( vfilterRows(vtcons(Vr,Vrtr),Val,Vp) = vfilterRows(Vrtr,Val,Vp) ) ) ).
tff('filterRows-INV',axiom,
! [VRawTable0: vRawTable,VAttrL0: vAttrL,VPred0: vPred] :
( ? [VwildcardName00: vAttrL,VwildcardName10: vPred] :
( ( VRawTable0 = vtempty )
& ( VAttrL0 = VwildcardName00 )
& ( VPred0 = VwildcardName10 )
& ( vfilterRows(VRawTable0,VAttrL0,VPred0) = vtempty ) )
| ? [Vp0: vPred,Vr0: vRow,Vrts0: vRawTable,Val0: vAttrL,Vrtr0: vRawTable] :
( ( Vrts0 = vfilterRows(Vrtr0,Val0,Vp0) )
& vfilterSingleRow(Vp0,Val0,Vr0)
& ( VRawTable0 = vtcons(Vr0,Vrtr0) )
& ( VAttrL0 = Val0 )
& ( VPred0 = Vp0 )
& ( vfilterRows(VRawTable0,VAttrL0,VPred0) = vtcons(Vr0,Vrts0) ) )
| ? [Vp1: vPred,Vr1: vRow,Vrts1: vRawTable,Val1: vAttrL,Vrtr1: vRawTable] :
( ( Vrts1 = vfilterRows(Vrtr1,Val1,Vp1) )
& ~ vfilterSingleRow(Vp1,Val1,Vr1)
& ( VRawTable0 = vtcons(Vr1,Vrtr1) )
& ( VAttrL0 = Val1 )
& ( VPred0 = Vp1 )
& ( vfilterRows(VRawTable0,VAttrL0,VPred0) = Vrts1 ) ) ) ).
tff('filterTable-0',axiom,
! [Val: vAttrL,Vrt: vRawTable,Vp: vPred] : ( vfilterTable(vtable(Val,Vrt),Vp) = vtable(Val,vfilterRows(Vrt,Val,Vp)) ) ).
tff('filterTable-INV',axiom,
! [VTable0: vTable,VPred0: vPred] :
? [Val0: vAttrL,Vrt0: vRawTable,Vp0: vPred] :
( ( VTable0 = vtable(Val0,Vrt0) )
& ( VPred0 = Vp0 )
& ( vfilterTable(VTable0,VPred0) = vtable(Val0,vfilterRows(Vrt0,Val0,Vp0)) ) ) ).
tff('reduce-0',axiom,
! [VwildcardName0: vTable,VwildcardName1: vTStore] : ( vreduce(vtvalue(VwildcardName0),VwildcardName1) = vnoQuery ) ).
tff('reduce-1',axiom,
! [Vn: vName,Vts: vTStore,Vs: vSelect,Vp: vPred] :
( ( visSomeTable(vlookupStore(Vn,Vts))
& visSomeTable(vprojectTable(Vs,vfilterTable(vgetTable(vlookupStore(Vn,Vts)),Vp))) )
=> ( vreduce(vselectFromWhere(Vs,Vn,Vp),Vts) = vsomeQuery(vtvalue(vgetTable(vprojectTable(Vs,vfilterTable(vgetTable(vlookupStore(Vn,Vts)),Vp))))) ) ) ).
tff('reduce-2',axiom,
! [Vn: vName,Vts: vTStore,Vs: vSelect,Vp: vPred] :
( ( visSomeTable(vlookupStore(Vn,Vts))
& ~ visSomeTable(vprojectTable(Vs,vfilterTable(vgetTable(vlookupStore(Vn,Vts)),Vp))) )
=> ( vreduce(vselectFromWhere(Vs,Vn,Vp),Vts) = vnoQuery ) ) ).
tff('reduce-3',axiom,
! [Vn: vName,Vts: vTStore,Vs: vSelect,Vp: vPred] :
( ~ visSomeTable(vlookupStore(Vn,Vts))
=> ( vreduce(vselectFromWhere(Vs,Vn,Vp),Vts) = vnoQuery ) ) ).
tff('reduce-4',axiom,
! [Vt1: vTable,Vt2: vTable,Vts: vTStore] : ( vreduce(vUnion(vtvalue(Vt1),vtvalue(Vt2)),Vts) = vsomeQuery(vtvalue(vtable(vgetAttrL(Vt1),vrawUnion(vgetRaw(Vt1),vgetRaw(Vt2))))) ) ).
tff('reduce-5',axiom,
! [Vt: vTable,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vt != Vt100 )
| ( Vq2 != vtvalue(Vt200) ) )
& visSomeQuery(vreduce(Vq2,Vts)) )
=> ( vreduce(vUnion(vtvalue(Vt),Vq2),Vts) = vsomeQuery(vUnion(vtvalue(Vt),vgetQuery(vreduce(Vq2,Vts)))) ) ) ).
tff('reduce-6',axiom,
! [Vt: vTable,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vt != Vt100 )
| ( Vq2 != vtvalue(Vt200) ) )
& ~ visSomeQuery(vreduce(Vq2,Vts)) )
=> ( vreduce(vUnion(vtvalue(Vt),Vq2),Vts) = vnoQuery ) ) ).
tff('reduce-7',axiom,
! [Vq1: vQuery,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vq1 != vtvalue(Vt100) )
| ( Vq2 != vtvalue(Vt200) ) )
& ! [Vt00: vTable,Vq200: vQuery] :
( ( Vq1 != vtvalue(Vt00) )
| ( Vq2 != Vq200 ) )
& visSomeQuery(vreduce(Vq1,Vts)) )
=> ( vreduce(vUnion(Vq1,Vq2),Vts) = vsomeQuery(vUnion(vgetQuery(vreduce(Vq1,Vts)),Vq2)) ) ) ).
tff('reduce-8',axiom,
! [Vq1: vQuery,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vq1 != vtvalue(Vt100) )
| ( Vq2 != vtvalue(Vt200) ) )
& ! [Vt00: vTable,Vq200: vQuery] :
( ( Vq1 != vtvalue(Vt00) )
| ( Vq2 != Vq200 ) )
& ~ visSomeQuery(vreduce(Vq1,Vts)) )
=> ( vreduce(vUnion(Vq1,Vq2),Vts) = vnoQuery ) ) ).
tff('reduce-9',axiom,
! [Vt1: vTable,Vt2: vTable,Vts: vTStore] : ( vreduce(vIntersection(vtvalue(Vt1),vtvalue(Vt2)),Vts) = vsomeQuery(vtvalue(vtable(vgetAttrL(Vt1),vrawIntersection(vgetRaw(Vt1),vgetRaw(Vt2))))) ) ).
tff('reduce-10',axiom,
! [Vt: vTable,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vt != Vt100 )
| ( Vq2 != vtvalue(Vt200) ) )
& visSomeQuery(vreduce(Vq2,Vts)) )
=> ( vreduce(vIntersection(vtvalue(Vt),Vq2),Vts) = vsomeQuery(vIntersection(vtvalue(Vt),vgetQuery(vreduce(Vq2,Vts)))) ) ) ).
tff('reduce-11',axiom,
! [Vt: vTable,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vt != Vt100 )
| ( Vq2 != vtvalue(Vt200) ) )
& ~ visSomeQuery(vreduce(Vq2,Vts)) )
=> ( vreduce(vIntersection(vtvalue(Vt),Vq2),Vts) = vnoQuery ) ) ).
tff('reduce-12',axiom,
! [Vq1: vQuery,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vq1 != vtvalue(Vt100) )
| ( Vq2 != vtvalue(Vt200) ) )
& ! [Vt00: vTable,Vq200: vQuery] :
( ( Vq1 != vtvalue(Vt00) )
| ( Vq2 != Vq200 ) )
& visSomeQuery(vreduce(Vq1,Vts)) )
=> ( vreduce(vIntersection(Vq1,Vq2),Vts) = vsomeQuery(vIntersection(vgetQuery(vreduce(Vq1,Vts)),Vq2)) ) ) ).
tff('reduce-13',axiom,
! [Vq1: vQuery,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vq1 != vtvalue(Vt100) )
| ( Vq2 != vtvalue(Vt200) ) )
& ! [Vt00: vTable,Vq200: vQuery] :
( ( Vq1 != vtvalue(Vt00) )
| ( Vq2 != Vq200 ) )
& ~ visSomeQuery(vreduce(Vq1,Vts)) )
=> ( vreduce(vIntersection(Vq1,Vq2),Vts) = vnoQuery ) ) ).
tff('reduce-14',axiom,
! [Vt1: vTable,Vt2: vTable,Vts: vTStore] : ( vreduce(vDifference(vtvalue(Vt1),vtvalue(Vt2)),Vts) = vsomeQuery(vtvalue(vtable(vgetAttrL(Vt1),vrawDifference(vgetRaw(Vt1),vgetRaw(Vt2))))) ) ).
tff('reduce-15',axiom,
! [Vt: vTable,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vt != Vt100 )
| ( Vq2 != vtvalue(Vt200) ) )
& visSomeQuery(vreduce(Vq2,Vts)) )
=> ( vreduce(vDifference(vtvalue(Vt),Vq2),Vts) = vsomeQuery(vDifference(vtvalue(Vt),vgetQuery(vreduce(Vq2,Vts)))) ) ) ).
tff('reduce-16',axiom,
! [Vt: vTable,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vt != Vt100 )
| ( Vq2 != vtvalue(Vt200) ) )
& ~ visSomeQuery(vreduce(Vq2,Vts)) )
=> ( vreduce(vDifference(vtvalue(Vt),Vq2),Vts) = vnoQuery ) ) ).
tff('reduce-17',axiom,
! [Vq1: vQuery,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vq1 != vtvalue(Vt100) )
| ( Vq2 != vtvalue(Vt200) ) )
& ! [Vt00: vTable,Vq200: vQuery] :
( ( Vq1 != vtvalue(Vt00) )
| ( Vq2 != Vq200 ) )
& visSomeQuery(vreduce(Vq1,Vts)) )
=> ( vreduce(vDifference(Vq1,Vq2),Vts) = vsomeQuery(vDifference(vgetQuery(vreduce(Vq1,Vts)),Vq2)) ) ) ).
tff('reduce-18',axiom,
! [Vq1: vQuery,Vq2: vQuery,Vts: vTStore] :
( ( ! [Vt100: vTable,Vt200: vTable] :
( ( Vq1 != vtvalue(Vt100) )
| ( Vq2 != vtvalue(Vt200) ) )
& ! [Vt00: vTable,Vq200: vQuery] :
( ( Vq1 != vtvalue(Vt00) )
| ( Vq2 != Vq200 ) )
& ~ visSomeQuery(vreduce(Vq1,Vts)) )
=> ( vreduce(vDifference(Vq1,Vq2),Vts) = vnoQuery ) ) ).
tff('reduce-INV',axiom,
! [VQuery0: vQuery,VTStore0: vTStore] :
( ? [VwildcardName00: vTable,VwildcardName10: vTStore] :
( ( VQuery0 = vtvalue(VwildcardName00) )
& ( VTStore0 = VwildcardName10 )
& ( vreduce(VQuery0,VTStore0) = vnoQuery ) )
| ? [Vp0: vPred,Vfiltered0: vTable,Vs0: vSelect,VmaybeTable0: vOptTable,VmaybeSelected0: vOptTable,Vts0: vTStore,Vn0: vName] :
( ( VmaybeTable0 = vlookupStore(Vn0,Vts0) )
& visSomeTable(VmaybeTable0)
& ( Vfiltered0 = vfilterTable(vgetTable(VmaybeTable0),Vp0) )
& ( VmaybeSelected0 = vprojectTable(Vs0,Vfiltered0) )
& visSomeTable(VmaybeSelected0)
& ( VQuery0 = vselectFromWhere(Vs0,Vn0,Vp0) )
& ( VTStore0 = Vts0 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vtvalue(vgetTable(VmaybeSelected0))) ) )
| ? [Vp1: vPred,Vfiltered1: vTable,Vs1: vSelect,VmaybeTable1: vOptTable,VmaybeSelected1: vOptTable,Vts1: vTStore,Vn1: vName] :
( ( VmaybeTable1 = vlookupStore(Vn1,Vts1) )
& visSomeTable(VmaybeTable1)
& ( Vfiltered1 = vfilterTable(vgetTable(VmaybeTable1),Vp1) )
& ( VmaybeSelected1 = vprojectTable(Vs1,Vfiltered1) )
& ~ visSomeTable(VmaybeSelected1)
& ( VQuery0 = vselectFromWhere(Vs1,Vn1,Vp1) )
& ( VTStore0 = Vts1 )
& ( vreduce(VQuery0,VTStore0) = vnoQuery ) )
| ? [Vp2: vPred,Vs2: vSelect,VmaybeTable2: vOptTable,Vts2: vTStore,Vn2: vName] :
( ( VmaybeTable2 = vlookupStore(Vn2,Vts2) )
& ~ visSomeTable(VmaybeTable2)
& ( VQuery0 = vselectFromWhere(Vs2,Vn2,Vp2) )
& ( VTStore0 = Vts2 )
& ( vreduce(VQuery0,VTStore0) = vnoQuery ) )
| ? [Vt10: vTable,Vt20: vTable,Vts3: vTStore] :
( ( VQuery0 = vUnion(vtvalue(Vt10),vtvalue(Vt20)) )
& ( VTStore0 = Vts3 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vtvalue(vtable(vgetAttrL(Vt10),vrawUnion(vgetRaw(Vt10),vgetRaw(Vt20))))) ) )
| ? [Vt0: vTable,Vq20: vQuery,Vq2reduce0: vOptQuery,Vts4: vTStore] :
( ! [Vt1000: vTable,Vt2000: vTable] :
( ( Vt0 != Vt1000 )
| ( Vq20 != vtvalue(Vt2000) ) )
& ( Vq2reduce0 = vreduce(Vq20,Vts4) )
& visSomeQuery(Vq2reduce0)
& ( VQuery0 = vUnion(vtvalue(Vt0),Vq20) )
& ( VTStore0 = Vts4 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vUnion(vtvalue(Vt0),vgetQuery(Vq2reduce0))) ) )
| ? [Vt11: vTable,Vq21: vQuery,Vq2reduce1: vOptQuery,Vts5: vTStore] :
( ! [Vt1010: vTable,Vt2010: vTable] :
( ( Vt11 != Vt1010 )
| ( Vq21 != vtvalue(Vt2010) ) )
& ( Vq2reduce1 = vreduce(Vq21,Vts5) )
& ~ visSomeQuery(Vq2reduce1)
& ( VQuery0 = vUnion(vtvalue(Vt11),Vq21) )
& ( VTStore0 = Vts5 )
& ( vreduce(VQuery0,VTStore0) = vnoQuery ) )
| ? [Vq10: vQuery,Vq22: vQuery,Vq1reduce0: vOptQuery,Vts6: vTStore] :
( ! [Vt1020: vTable,Vt2020: vTable] :
( ( Vq10 != vtvalue(Vt1020) )
| ( Vq22 != vtvalue(Vt2020) ) )
& ! [Vt000: vTable,Vq2000: vQuery] :
( ( Vq10 != vtvalue(Vt000) )
| ( Vq22 != Vq2000 ) )
& ( Vq1reduce0 = vreduce(Vq10,Vts6) )
& visSomeQuery(Vq1reduce0)
& ( VQuery0 = vUnion(Vq10,Vq22) )
& ( VTStore0 = Vts6 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vUnion(vgetQuery(Vq1reduce0),Vq22)) ) )
| ? [Vq11: vQuery,Vq23: vQuery,Vq1reduce1: vOptQuery,Vts7: vTStore] :
( ! [Vt1030: vTable,Vt2030: vTable] :
( ( Vq11 != vtvalue(Vt1030) )
| ( Vq23 != vtvalue(Vt2030) ) )
& ! [Vt010: vTable,Vq2010: vQuery] :
( ( Vq11 != vtvalue(Vt010) )
| ( Vq23 != Vq2010 ) )
& ( Vq1reduce1 = vreduce(Vq11,Vts7) )
& ~ visSomeQuery(Vq1reduce1)
& ( VQuery0 = vUnion(Vq11,Vq23) )
& ( VTStore0 = Vts7 )
& ( vreduce(VQuery0,VTStore0) = vnoQuery ) )
| ? [Vt12: vTable,Vt21: vTable,Vts8: vTStore] :
( ( VQuery0 = vIntersection(vtvalue(Vt12),vtvalue(Vt21)) )
& ( VTStore0 = Vts8 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vtvalue(vtable(vgetAttrL(Vt12),vrawIntersection(vgetRaw(Vt12),vgetRaw(Vt21))))) ) )
| ? [Vt22: vTable,Vq24: vQuery,Vq2reduce2: vOptQuery,Vts9: vTStore] :
( ! [Vt1040: vTable,Vt2040: vTable] :
( ( Vt22 != Vt1040 )
| ( Vq24 != vtvalue(Vt2040) ) )
& ( Vq2reduce2 = vreduce(Vq24,Vts9) )
& visSomeQuery(Vq2reduce2)
& ( VQuery0 = vIntersection(vtvalue(Vt22),Vq24) )
& ( VTStore0 = Vts9 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vIntersection(vtvalue(Vt22),vgetQuery(Vq2reduce2))) ) )
| ? [Vt3: vTable,Vq25: vQuery,Vq2reduce3: vOptQuery,Vts10: vTStore] :
( ! [Vt1050: vTable,Vt2050: vTable] :
( ( Vt3 != Vt1050 )
| ( Vq25 != vtvalue(Vt2050) ) )
& ( Vq2reduce3 = vreduce(Vq25,Vts10) )
& ~ visSomeQuery(Vq2reduce3)
& ( VQuery0 = vIntersection(vtvalue(Vt3),Vq25) )
& ( VTStore0 = Vts10 )
& ( vreduce(VQuery0,VTStore0) = vnoQuery ) )
| ? [Vq12: vQuery,Vq26: vQuery,Vq1reduce2: vOptQuery,Vts11: vTStore] :
( ! [Vt1060: vTable,Vt2060: vTable] :
( ( Vq12 != vtvalue(Vt1060) )
| ( Vq26 != vtvalue(Vt2060) ) )
& ! [Vt020: vTable,Vq2020: vQuery] :
( ( Vq12 != vtvalue(Vt020) )
| ( Vq26 != Vq2020 ) )
& ( Vq1reduce2 = vreduce(Vq12,Vts11) )
& visSomeQuery(Vq1reduce2)
& ( VQuery0 = vIntersection(Vq12,Vq26) )
& ( VTStore0 = Vts11 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vIntersection(vgetQuery(Vq1reduce2),Vq26)) ) )
| ? [Vq13: vQuery,Vq27: vQuery,Vq1reduce3: vOptQuery,Vts12: vTStore] :
( ! [Vt1070: vTable,Vt2070: vTable] :
( ( Vq13 != vtvalue(Vt1070) )
| ( Vq27 != vtvalue(Vt2070) ) )
& ! [Vt030: vTable,Vq2030: vQuery] :
( ( Vq13 != vtvalue(Vt030) )
| ( Vq27 != Vq2030 ) )
& ( Vq1reduce3 = vreduce(Vq13,Vts12) )
& ~ visSomeQuery(Vq1reduce3)
& ( VQuery0 = vIntersection(Vq13,Vq27) )
& ( VTStore0 = Vts12 )
& ( vreduce(VQuery0,VTStore0) = vnoQuery ) )
| ? [Vt13: vTable,Vt23: vTable,Vts13: vTStore] :
( ( VQuery0 = vDifference(vtvalue(Vt13),vtvalue(Vt23)) )
& ( VTStore0 = Vts13 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vtvalue(vtable(vgetAttrL(Vt13),vrawDifference(vgetRaw(Vt13),vgetRaw(Vt23))))) ) )
| ? [Vt4: vTable,Vq28: vQuery,Vq2reduce4: vOptQuery,Vts14: vTStore] :
( ! [Vt1080: vTable,Vt2080: vTable] :
( ( Vt4 != Vt1080 )
| ( Vq28 != vtvalue(Vt2080) ) )
& ( Vq2reduce4 = vreduce(Vq28,Vts14) )
& visSomeQuery(Vq2reduce4)
& ( VQuery0 = vDifference(vtvalue(Vt4),Vq28) )
& ( VTStore0 = Vts14 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vDifference(vtvalue(Vt4),vgetQuery(Vq2reduce4))) ) )
| ? [Vt5: vTable,Vq29: vQuery,Vq2reduce5: vOptQuery,Vts15: vTStore] :
( ! [Vt1090: vTable,Vt2090: vTable] :
( ( Vt5 != Vt1090 )
| ( Vq29 != vtvalue(Vt2090) ) )
& ( Vq2reduce5 = vreduce(Vq29,Vts15) )
& ~ visSomeQuery(Vq2reduce5)
& ( VQuery0 = vDifference(vtvalue(Vt5),Vq29) )
& ( VTStore0 = Vts15 )
& ( vreduce(VQuery0,VTStore0) = vnoQuery ) )
| ? [Vq14: vQuery,Vq210: vQuery,Vq1reduce4: vOptQuery,Vts16: vTStore] :
( ! [Vt10100: vTable,Vt20100: vTable] :
( ( Vq14 != vtvalue(Vt10100) )
| ( Vq210 != vtvalue(Vt20100) ) )
& ! [Vt040: vTable,Vq2040: vQuery] :
( ( Vq14 != vtvalue(Vt040) )
| ( Vq210 != Vq2040 ) )
& ( Vq1reduce4 = vreduce(Vq14,Vts16) )
& visSomeQuery(Vq1reduce4)
& ( VQuery0 = vDifference(Vq14,Vq210) )
& ( VTStore0 = Vts16 )
& ( vreduce(VQuery0,VTStore0) = vsomeQuery(vDifference(vgetQuery(Vq1reduce4),Vq210)) ) )
| ? [Vq15: vQuery,Vq211: vQuery,Vq1reduce5: vOptQuery,Vts17: vTStore] :
( ! [Vt10110: vTable,Vt20110: vTable] :
( ( Vq15 != vtvalue(Vt10110) )
| ( Vq211 != vtvalue(Vt20110) ) )
& ! [Vt050: vTable,Vq2050: vQuery] :
( ( Vq15 != vtvalue(Vt050) )
| ( Vq211 != Vq2050 ) )
& ( Vq1reduce5 = vreduce(Vq15,Vts17) )
& ~ visSomeQuery(Vq1reduce5)
& ( VQuery0 = vDifference(Vq15,Vq211) )
& ( VTStore0 = Vts17 )
& ( vreduce(VQuery0,VTStore0) = vnoQuery ) ) ) ).
tff('isSomeFType-0',axiom,
~ visSomeFType(vnoFType) ).
tff('isSomeFType-1',axiom,
! [Va: vFType] : visSomeFType(vsomeFType(Va)) ).
tff('isSomeFType-true-INV',axiom,
! [VOptFType0: vOptFType] :
( visSomeFType(VOptFType0)
=> ? [Va: vFType] : ( VOptFType0 = vsomeFType(Va) ) ) ).
tff('isSomeFType-false-INV',axiom,
! [VOptFType0: vOptFType] :
( ~ visSomeFType(VOptFType0)
=> ( VOptFType0 = vnoFType ) ) ).
tff('findColType-0',axiom,
! [Vn: vName] : ( vfindColType(Vn,vttempty) = vnoFType ) ).
tff('findColType-1',axiom,
! [Va: vName,Vft: vFType,Vttr: vTType] : ( vfindColType(Va,vttcons(Va,Vft,Vttr)) = vsomeFType(Vft) ) ).
tff('findColType-2',axiom,
! [Vn: vName,Va: vName,Vft: vFType,Vttr: vTType] :
( ( Vn != Va )
=> ( vfindColType(Vn,vttcons(Va,Vft,Vttr)) = vfindColType(Vn,Vttr) ) ) ).
tff('findColType-INV',axiom,
! [VName0: vName,VTType0: vTType] :
( ? [Vn0: vName] :
( ( VName0 = Vn0 )
& ( VTType0 = vttempty )
& ( vfindColType(VName0,VTType0) = vnoFType ) )
| ? [Va0: vName,Vft0: vFType,Vttr0: vTType,Vn1: vName] :
( ( Vn1 = Va0 )
& ( VName0 = Vn1 )
& ( VTType0 = vttcons(Va0,Vft0,Vttr0) )
& ( vfindColType(VName0,VTType0) = vsomeFType(Vft0) ) )
| ? [Va1: vName,Vft1: vFType,Vttr1: vTType,Vn2: vName] :
( ( Vn2 != Va1 )
& ( VName0 = Vn2 )
& ( VTType0 = vttcons(Va1,Vft1,Vttr1) )
& ( vfindColType(VName0,VTType0) = vfindColType(Vn2,Vttr1) ) ) ) ).
tff('projectTypeAttrL-0',axiom,
! [Vtt: vTType] : ( vprojectTypeAttrL(vaempty,Vtt) = vsomeTType(vttempty) ) ).
tff('projectTypeAttrL-1',axiom,
! [Va: vName,Vtt: vTType,Valr: vAttrL] :
( ( visSomeFType(vfindColType(Va,Vtt))
& visSomeTType(vprojectTypeAttrL(Valr,Vtt)) )
=> ( vprojectTypeAttrL(vacons(Va,Valr),Vtt) = vsomeTType(vttcons(Va,vgetFType(vfindColType(Va,Vtt)),vgetTType(vprojectTypeAttrL(Valr,Vtt)))) ) ) ).
tff('projectTypeAttrL-2',axiom,
! [Va: vName,Vtt: vTType,Valr: vAttrL] :
( ~ ( visSomeFType(vfindColType(Va,Vtt))
& visSomeTType(vprojectTypeAttrL(Valr,Vtt)) )
=> ( vprojectTypeAttrL(vacons(Va,Valr),Vtt) = vnoTType ) ) ).
tff('projectTypeAttrL-INV',axiom,
! [VAttrL0: vAttrL,VTType0: vTType] :
( ? [Vtt0: vTType] :
( ( VAttrL0 = vaempty )
& ( VTType0 = Vtt0 )
& ( vprojectTypeAttrL(VAttrL0,VTType0) = vsomeTType(vttempty) ) )
| ? [Va0: vName,Vft0: vOptFType,Vtt1: vTType,Valr0: vAttrL,Vtprest0: vOptTType] :
( ( Vft0 = vfindColType(Va0,Vtt1) )
& ( Vtprest0 = vprojectTypeAttrL(Valr0,Vtt1) )
& visSomeFType(Vft0)
& visSomeTType(Vtprest0)
& ( VAttrL0 = vacons(Va0,Valr0) )
& ( VTType0 = Vtt1 )
& ( vprojectTypeAttrL(VAttrL0,VTType0) = vsomeTType(vttcons(Va0,vgetFType(Vft0),vgetTType(Vtprest0))) ) )
| ? [Va1: vName,Vft1: vOptFType,Vtt2: vTType,Valr1: vAttrL,Vtprest1: vOptTType] :
( ( Vft1 = vfindColType(Va1,Vtt2) )
& ( Vtprest1 = vprojectTypeAttrL(Valr1,Vtt2) )
& ~ ( visSomeFType(Vft1)
& visSomeTType(Vtprest1) )
& ( VAttrL0 = vacons(Va1,Valr1) )
& ( VTType0 = Vtt2 )
& ( vprojectTypeAttrL(VAttrL0,VTType0) = vnoTType ) ) ) ).
tff('projectType-0',axiom,
! [Vtt1: vTType] : ( vprojectType(vall,Vtt1) = vsomeTType(Vtt1) ) ).
tff('projectType-1',axiom,
! [Val: vAttrL,Vtt1: vTType] : ( vprojectType(vlist(Val),Vtt1) = vprojectTypeAttrL(Val,Vtt1) ) ).
tff('projectType-INV',axiom,
! [VSelect0: vSelect,VTType0: vTType] :
( ? [Vtt10: vTType] :
( ( VSelect0 = vall )
& ( VTType0 = Vtt10 )
& ( vprojectType(VSelect0,VTType0) = vsomeTType(Vtt10) ) )
| ? [Val0: vAttrL,Vtt11: vTType] :
( ( VSelect0 = vlist(Val0) )
& ( VTType0 = Vtt11 )
& ( vprojectType(VSelect0,VTType0) = vprojectTypeAttrL(Val0,Vtt11) ) ) ) ).
tff('typeOfExp-0',axiom,
! [Vfv: vVal,Vtt: vTType] : ( vtypeOfExp(vconstant(Vfv),Vtt) = vsomeFType(vfieldType(Vfv)) ) ).
tff('typeOfExp-1',axiom,
! [Vn: vName] : ( vtypeOfExp(vlookup(Vn),vttempty) = vnoFType ) ).
tff('typeOfExp-2',axiom,
! [Va2: vName,Vft: vFType,Vttr: vTType] : ( vtypeOfExp(vlookup(Va2),vttcons(Va2,Vft,Vttr)) = vsomeFType(Vft) ) ).
tff('typeOfExp-3',axiom,
! [Vn: vName,Va2: vName,Vft: vFType,Vttr: vTType] :
( ( Vn != Va2 )
=> ( vtypeOfExp(vlookup(Vn),vttcons(Va2,Vft,Vttr)) = vtypeOfExp(vlookup(Vn),Vttr) ) ) ).
tff('typeOfExp-INV',axiom,
! [VExp0: vExp,VTType0: vTType] :
( ? [Vfv0: vVal,Vtt0: vTType] :
( ( VExp0 = vconstant(Vfv0) )
& ( VTType0 = Vtt0 )
& ( vtypeOfExp(VExp0,VTType0) = vsomeFType(vfieldType(Vfv0)) ) )
| ? [Vn0: vName] :
( ( VExp0 = vlookup(Vn0) )
& ( VTType0 = vttempty )
& ( vtypeOfExp(VExp0,VTType0) = vnoFType ) )
| ? [Vn1: vName,Va20: vName,Vft0: vFType,Vttr0: vTType] :
( ( Vn1 = Va20 )
& ( VExp0 = vlookup(Vn1) )
& ( VTType0 = vttcons(Va20,Vft0,Vttr0) )
& ( vtypeOfExp(VExp0,VTType0) = vsomeFType(Vft0) ) )
| ? [Vn2: vName,Va21: vName,Vft1: vFType,Vttr1: vTType] :
( ( Vn2 != Va21 )
& ( VExp0 = vlookup(Vn2) )
& ( VTType0 = vttcons(Va21,Vft1,Vttr1) )
& ( vtypeOfExp(VExp0,VTType0) = vtypeOfExp(vlookup(Vn2),Vttr1) ) ) ) ).
tff('tcheckPred-0',axiom,
! [Vtt: vTType] : vtcheckPred(vptrue,Vtt) ).
tff('tcheckPred-1',axiom,
! [Vp1: vPred,Vp2: vPred,Vtt: vTType] :
( vtcheckPred(vand(Vp1,Vp2),Vtt)
<=> ( vtcheckPred(Vp1,Vtt)
& vtcheckPred(Vp2,Vtt) ) ) ).
tff('tcheckPred-2',axiom,
! [Vp: vPred,Vtt: vTType] :
( vtcheckPred(vnot(Vp),Vtt)
<=> vtcheckPred(Vp,Vtt) ) ).
tff('tcheckPred-3',axiom,
! [Ve1: vExp,Ve2: vExp,Vtt: vTType] :
( vtcheckPred(veq(Ve1,Ve2),Vtt)
<=> ( visSomeFType(vtypeOfExp(Ve1,Vtt))
& visSomeFType(vtypeOfExp(Ve2,Vtt))
& ( vgetFType(vtypeOfExp(Ve1,Vtt)) = vgetFType(vtypeOfExp(Ve2,Vtt)) ) ) ) ).
tff('tcheckPred-4',axiom,
! [Ve1: vExp,Ve2: vExp,Vtt: vTType] :
( vtcheckPred(vgt(Ve1,Ve2),Vtt)
<=> ( visSomeFType(vtypeOfExp(Ve1,Vtt))
& visSomeFType(vtypeOfExp(Ve2,Vtt))
& ( vgetFType(vtypeOfExp(Ve1,Vtt)) = vgetFType(vtypeOfExp(Ve2,Vtt)) ) ) ) ).
tff('tcheckPred-5',axiom,
! [Ve1: vExp,Ve2: vExp,Vtt: vTType] :
( vtcheckPred(vlt(Ve1,Ve2),Vtt)
<=> ( visSomeFType(vtypeOfExp(Ve1,Vtt))
& visSomeFType(vtypeOfExp(Ve2,Vtt))
& ( vgetFType(vtypeOfExp(Ve1,Vtt)) = vgetFType(vtypeOfExp(Ve2,Vtt)) ) ) ) ).
tff('tcheckPred-true-INV',axiom,
! [VPred0: vPred,VTType0: vTType] :
( vtcheckPred(VPred0,VTType0)
=> ( ? [Vtt: vTType] :
( ( VPred0 = vptrue )
& ( VTType0 = Vtt ) )
| ? [Vp1: vPred,Vp2: vPred,Vtt: vTType] :
( ( VPred0 = vand(Vp1,Vp2) )
& ( VTType0 = Vtt )
& vtcheckPred(Vp1,Vtt)
& vtcheckPred(Vp2,Vtt) )
| ? [Vp: vPred,Vtt: vTType] :
( ( VPred0 = vnot(Vp) )
& ( VTType0 = Vtt )
& vtcheckPred(Vp,Vtt) )
| ? [Vt1: vOptFType,Ve1: vExp,Vt2: vOptFType,Ve2: vExp,Vtt: vTType] :
( ( Vt1 = vtypeOfExp(Ve1,Vtt) )
& ( Vt2 = vtypeOfExp(Ve2,Vtt) )
& ( VPred0 = veq(Ve1,Ve2) )
& ( VTType0 = Vtt )
& visSomeFType(Vt1)
& visSomeFType(Vt2)
& ( vgetFType(Vt1) = vgetFType(Vt2) ) )
| ? [Vt1: vOptFType,Ve1: vExp,Vt2: vOptFType,Ve2: vExp,Vtt: vTType] :
( ( Vt1 = vtypeOfExp(Ve1,Vtt) )
& ( Vt2 = vtypeOfExp(Ve2,Vtt) )
& ( VPred0 = vgt(Ve1,Ve2) )
& ( VTType0 = Vtt )
& visSomeFType(Vt1)
& visSomeFType(Vt2)
& ( vgetFType(Vt1) = vgetFType(Vt2) ) )
| ? [Vt1: vOptFType,Ve1: vExp,Vt2: vOptFType,Ve2: vExp,Vtt: vTType] :
( ( Vt1 = vtypeOfExp(Ve1,Vtt) )
& ( Vt2 = vtypeOfExp(Ve2,Vtt) )
& ( VPred0 = vlt(Ve1,Ve2) )
& ( VTType0 = Vtt )
& visSomeFType(Vt1)
& visSomeFType(Vt2)
& ( vgetFType(Vt1) = vgetFType(Vt2) ) ) ) ) ).
tff('tcheckPred-false-INV',axiom,
! [VPred0: vPred,VTType0: vTType] :
( ~ vtcheckPred(VPred0,VTType0)
=> ( ? [Vp1: vPred,Vp2: vPred,Vtt: vTType] :
( ( VPred0 = vand(Vp1,Vp2) )
& ( VTType0 = Vtt )
& ~ ( vtcheckPred(Vp1,Vtt)
& vtcheckPred(Vp2,Vtt) ) )
| ? [Vp: vPred,Vtt: vTType] :
( ( VPred0 = vnot(Vp) )
& ( VTType0 = Vtt )
& ~ vtcheckPred(Vp,Vtt) )
| ? [Vt1: vOptFType,Ve1: vExp,Vt2: vOptFType,Ve2: vExp,Vtt: vTType] :
( ( Vt1 = vtypeOfExp(Ve1,Vtt) )
& ( Vt2 = vtypeOfExp(Ve2,Vtt) )
& ( VPred0 = veq(Ve1,Ve2) )
& ( VTType0 = Vtt )
& ~ ( visSomeFType(Vt1)
& visSomeFType(Vt2)
& ( vgetFType(Vt1) = vgetFType(Vt2) ) ) )
| ? [Vt1: vOptFType,Ve1: vExp,Vt2: vOptFType,Ve2: vExp,Vtt: vTType] :
( ( Vt1 = vtypeOfExp(Ve1,Vtt) )
& ( Vt2 = vtypeOfExp(Ve2,Vtt) )
& ( VPred0 = vgt(Ve1,Ve2) )
& ( VTType0 = Vtt )
& ~ ( visSomeFType(Vt1)
& visSomeFType(Vt2)
& ( vgetFType(Vt1) = vgetFType(Vt2) ) ) )
| ? [Vt1: vOptFType,Ve1: vExp,Vt2: vOptFType,Ve2: vExp,Vtt: vTType] :
( ( Vt1 = vtypeOfExp(Ve1,Vtt) )
& ( Vt2 = vtypeOfExp(Ve2,Vtt) )
& ( VPred0 = vlt(Ve1,Ve2) )
& ( VTType0 = Vtt )
& ~ ( visSomeFType(Vt1)
& visSomeFType(Vt2)
& ( vgetFType(Vt1) = vgetFType(Vt2) ) ) ) ) ) ).
tff('storeContextConsistent-0',axiom,
vstoreContextConsistent(vemptyStore,vemptyContext) ).
tff('storeContextConsistent-1',axiom,
! [Vtn2: vName,Vt: vTable,Vttcr: vTTContext,Vtn1: vName,Vtsr: vTStore,Vtt: vTType] :
( vstoreContextConsistent(vbindStore(Vtn1,Vt,Vtsr),vbindContext(Vtn2,Vtt,Vttcr))
<=> ( ( Vtn1 = Vtn2 )
& vwelltypedtable(Vtt,Vt)
& vstoreContextConsistent(Vtsr,Vttcr) ) ) ).
tff('storeContextConsistent-2',axiom,
! [VwildcardName0: vTStore,VwildcardName1: vTTContext] :
( ( ( ( VwildcardName0 != vemptyStore )
| ( VwildcardName1 != vemptyContext ) )
& ( ! [Vtn10: vName,Vt0: vTable,Vtsr0: vTStore] : ( VwildcardName0 != vbindStore(Vtn10,Vt0,Vtsr0) )
| ! [Vtn20: vName,Vtt0: vTType,Vttcr0: vTTContext] : ( VwildcardName1 != vbindContext(Vtn20,Vtt0,Vttcr0) ) ) )
=> ~ vstoreContextConsistent(VwildcardName0,VwildcardName1) ) ).
tff('storeContextConsistent-true-INV',axiom,
! [VTStore0: vTStore,VTTContext0: vTTContext] :
( vstoreContextConsistent(VTStore0,VTTContext0)
=> ( ( ( VTStore0 = vemptyStore )
& ( VTTContext0 = vemptyContext ) )
| ? [Vtn2: vName,Vt: vTable,Vttcr: vTTContext,Vtn1: vName,Vtsr: vTStore,Vtt: vTType] :
( ( VTStore0 = vbindStore(Vtn1,Vt,Vtsr) )
& ( VTTContext0 = vbindContext(Vtn2,Vtt,Vttcr) )
& ( Vtn1 = Vtn2 )
& vwelltypedtable(Vtt,Vt)
& vstoreContextConsistent(Vtsr,Vttcr) ) ) ) ).
tff('storeContextConsistent-false-INV',axiom,
! [VTStore0: vTStore,VTTContext0: vTTContext] :
( ~ vstoreContextConsistent(VTStore0,VTTContext0)
=> ( ? [Vtn2: vName,Vt: vTable,Vttcr: vTTContext,Vtn1: vName,Vtsr: vTStore,Vtt: vTType] :
( ( VTStore0 = vbindStore(Vtn1,Vt,Vtsr) )
& ( VTTContext0 = vbindContext(Vtn2,Vtt,Vttcr) )
& ~ ( ( Vtn1 = Vtn2 )
& vwelltypedtable(Vtt,Vt)
& vstoreContextConsistent(Vtsr,Vttcr) ) )
| ? [VwildcardName0: vTStore,VwildcardName1: vTTContext] :
( ( ( VwildcardName0 != vemptyStore )
| ( VwildcardName1 != vemptyContext ) )
& ( ! [Vtn10: vName,Vt0: vTable,Vtsr0: vTStore] : ( VwildcardName0 != vbindStore(Vtn10,Vt0,Vtsr0) )
| ! [Vtn20: vName,Vtt0: vTType,Vttcr0: vTTContext] : ( VwildcardName1 != vbindContext(Vtn20,Vtt0,Vttcr0) ) )
& ( VTStore0 = VwildcardName0 )
& ( VTTContext0 = VwildcardName1 ) ) ) ) ).
tff('TTTContextDuplicate',axiom,
! [VTx: vTType,Vy: vName,Ve: vQuery,VC: vTTContext,VTy: vTType,VT: vTType] :
( vptcheck(vbindContext(Vy,VTx,vbindContext(Vy,VTy,VC)),Ve,VT)
=> vptcheck(vbindContext(Vy,VTx,VC),Ve,VT) ) ).
tff('TTTContextSwap',axiom,
! [Vx: vName,VTx: vTType,Vy: vName,Ve: vQuery,VC: vTTContext,VTy: vTType,VT: vTType] :
( ( ( Vx != Vy )
& vptcheck(vbindContext(Vx,VTx,vbindContext(Vy,VTy,VC)),Ve,VT) )
=> vptcheck(vbindContext(Vy,VTy,vbindContext(Vx,VTx,VC)),Ve,VT) ) ).
tff('Ttvalue',axiom,
! [VTT: vTType,Vt: vTable,VTTC: vTTContext] :
( vwelltypedtable(VTT,Vt)
=> vptcheck(VTTC,vtvalue(Vt),VTT) ) ).
tff('TSelectFromWhere',axiom,
! [Vp: vPred,VTTr: vTType,Vsel: vSelect,VTT: vTType,Vtn: vName,VTTC: vTTContext] :
( ( ( vlookupContext(Vtn,VTTC) = vsomeTType(VTT) )
& vtcheckPred(Vp,VTT)
& ( vprojectType(Vsel,VTT) = vsomeTType(VTTr) ) )
=> vptcheck(VTTC,vselectFromWhere(Vsel,Vtn,Vp),VTTr) ) ).
tff('TUnion',axiom,
! [VTTC: vTTContext,Vq1: vQuery,VTT: vTType,Vq2: vQuery] :
( ( vptcheck(VTTC,Vq1,VTT)
& vptcheck(VTTC,Vq2,VTT) )
=> vptcheck(VTTC,vUnion(Vq1,Vq2),VTT) ) ).
tff('TIntersection',axiom,
! [VTTC: vTTContext,Vq1: vQuery,VTT: vTType,Vq2: vQuery] :
( ( vptcheck(VTTC,Vq1,VTT)
& vptcheck(VTTC,Vq2,VTT) )
=> vptcheck(VTTC,vIntersection(Vq1,Vq2),VTT) ) ).
tff('TDifference',axiom,
! [VTTC: vTTContext,Vq1: vQuery,VTT: vTType,Vq2: vQuery] :
( ( vptcheck(VTTC,Vq1,VTT)
& vptcheck(VTTC,Vq2,VTT) )
=> vptcheck(VTTC,vDifference(Vq1,Vq2),VTT) ) ).
tff('Ttvalue_inv',axiom,
! [VTTC: vTTContext,Vt: vTable,VTT: vTType] :
( vptcheck(VTTC,vtvalue(Vt),VTT)
=> vwelltypedtable(VTT,Vt) ) ).
tff('TSelectFromWhere_inv',axiom,
! [Vp: vPred,VTTr: vTType,Vsel: vSelect,Vtn: vName,VTTC: vTTContext] :
( vptcheck(VTTC,vselectFromWhere(Vsel,Vtn,Vp),VTTr)
=> ? [VTT: vTType] :
( ( vlookupContext(Vtn,VTTC) = vsomeTType(VTT) )
& vtcheckPred(Vp,VTT)
& ( vprojectType(Vsel,VTT) = vsomeTType(VTTr) ) ) ) ).
tff('TUnion_inv1',axiom,
! [VTTC: vTTContext,Vq1: vQuery,Vq2: vQuery,VTT: vTType] :
( vptcheck(VTTC,vUnion(Vq1,Vq2),VTT)
=> vptcheck(VTTC,Vq1,VTT) ) ).
tff('TUnion_inv2',axiom,
! [VTTC: vTTContext,Vq1: vQuery,Vq2: vQuery,VTT: vTType] :
( vptcheck(VTTC,vUnion(Vq1,Vq2),VTT)
=> vptcheck(VTTC,Vq2,VTT) ) ).
tff('TIntersection_inv1',axiom,
! [VTTC: vTTContext,Vq1: vQuery,Vq2: vQuery,VTT: vTType] :
( vptcheck(VTTC,vIntersection(Vq1,Vq2),VTT)
=> vptcheck(VTTC,Vq1,VTT) ) ).
tff('TIntersection_inv2',axiom,
! [VTTC: vTTContext,Vq1: vQuery,Vq2: vQuery,VTT: vTType] :
( vptcheck(VTTC,vIntersection(Vq1,Vq2),VTT)
=> vptcheck(VTTC,Vq2,VTT) ) ).
tff('TDifference_inv1',axiom,
! [VTTC: vTTContext,Vq1: vQuery,Vq2: vQuery,VTT: vTType] :
( vptcheck(VTTC,vDifference(Vq1,Vq2),VTT)
=> vptcheck(VTTC,Vq1,VTT) ) ).
tff('TDifference_inv2',axiom,
! [VTTC: vTTContext,Vq1: vQuery,Vq2: vQuery,VTT: vTType] :
( vptcheck(VTTC,vDifference(Vq1,Vq2),VTT)
=> vptcheck(VTTC,Vq2,VTT) ) ).
tff('Preservation-Difference-IH0',axiom,
! [Vts: vTStore,Vttc: vTTContext,Vtt: vTType,Vqr: vQuery] :
( ( vstoreContextConsistent(Vts,Vttc)
& vptcheck(Vttc,vq1,Vtt)
& ( vreduce(vq1,Vts) = vsomeQuery(Vqr) ) )
=> vptcheck(Vttc,Vqr,Vtt) ) ).
tff('Preservation-Difference-IH1',axiom,
! [Vts: vTStore,Vttc: vTTContext,Vtt: vTType,Vqr: vQuery] :
( ( vstoreContextConsistent(Vts,Vttc)
& vptcheck(Vttc,vq2,Vtt)
& ( vreduce(vq2,Vts) = vsomeQuery(Vqr) ) )
=> vptcheck(Vttc,Vqr,Vtt) ) ).
tff('Preservation-Difference-tvalue-q2-isSomeQuery-False',conjecture,
! [Vqr: vQuery,Vt: vTable,Vttc: vTTContext,Vts: vTStore,Vtt: vTType] :
( ( ~ visSomeQuery(vreduce(vq2,Vts))
& ! [Vt200: vTable] : ( vq2 != vtvalue(Vt200) )
& ( vq1 = vtvalue(Vt) )
& vstoreContextConsistent(Vts,Vttc)
& vptcheck(Vttc,vDifference(vq1,vq2),Vtt)
& ( vreduce(vDifference(vq1,vq2),Vts) = vsomeQuery(Vqr) ) )
=> vptcheck(Vttc,Vqr,Vtt) ) ).
%------------------------------------------------------------------------------