1. Definition of Abstration
if ( A . checker ( a ) == true )
console . log ( a . in ( A ) ) // true
// A.checker(a) == true => a \in A
2. Equivalence of Abstration
if ( cares ( A ) . is_equal ( cares ( B ) ) )
console . log ( A == B ) // true
// cares(A).is_equal(cares(B)) => A == B
3. Hierarchy of Abstration (Feature Extraction)
if ( cares ( B ) . is_a_subset_of ( cares ( A ) ) )
console . log ( B . is_a_subclass_of ( A ) ) // true
// cares(B).is_a_subset_of(cares(A)) => B \subseteq A
4. Computation of Abstraction
let A = a . strip_one_layer_of_care ( )
let f = ( x : A ) => transform ( x )
let t = f . compute_without_detail_reduction ( symbolize ( a ) )
if ( t . is_a_terminal_symbol ( ) ) {
console . log ( f ( A ) ) // t
console . log ( f ( a ) ) // t
} else {
let B = new_class ( t )
console . log ( B ) // A
}
if ( f ( A ) == t && a . in ( A ) )
console . log ( f ( a ) ) // t
// f(A) -> t; a\in A; => f(a) -> t
if ( f ( A ) == t && B . is_a_subclass_of ( A ) )
console . log ( f ( B ) ) // t
// f(A) -> t; B \subseteq A; => f(B) -> t
6. Equivalence of Computation
if ( g . arguments_types == f . arguments_types == A && f ( A ) == g ( A ) )
console . log ( f == g ) // true
console . log ( f . equivalent_forms ) // [g]
// g.arguments_types == f.arguments_types == A; f(A) == g(A); => f == g