Documentation

Cedar.Thm.External.Linker

The result declares exactly the entity types declared by either input.

The result declares exactly the action UIDs declared by either input.

Every action from either input keeps its ancestors in the result.

Every standard or external entity type from either input is standard or external in the result. In particular, an external entity type never links to an enumerated entity type.

The result never declares the entity type of an action as an entity type.

Every entity definition of the result is a definition from either input.

Every action entry of the result is that action's entry in either input.

An entity type's ancestors in the result are exactly the entity types reachable from it through the ancestors listed by either input.

The result keeps every declaration of either input.

theorem Cedar.Validation.linker_result_kept {p c t u : PartialSchema} (hlink : link p c = Except.ok t) (hclosed : u.ets.AncestorsClosed) (hpu : DeclarationsKept p u) (hcu : DeclarationsKept c u) :

A partial schema with closed ancestors that keeps the declarations of both inputs keeps the declarations of the result.

A well-formed partial schema links into the schema that completes it with attributes attrs, when these are well-formed and lifted.

A well-formed partial schema links into its validation view.

Changing the input order does not change a successful link.

Changing the input order does not change whether linking fails.

Linking well-formed partial schemas produces a well-formed partial schema.

theorem Cedar.Validation.linker_completed_schema_well_formed {p c t : PartialSchema} {schema : Schema} (hp : p.WellFormed) (hc : c.WellFormed) (hlink : link p c = Except.ok t) (hcomplete : t.asSchema? = some schema) :

A complete link passes the existing schema well-formedness check.

theorem Cedar.Validation.linker_associativity {p c d t₁ t : PartialSchema} (hp : p.WellFormed) (hc : c.WellFormed) (hd : d.WellFormed) (hpc : link p c = Except.ok t₁) (hpcd : link t₁ d = Except.ok t) :

Changing the grouping does not change a successful link.

theorem Cedar.Validation.linker_associativity_error {p c d : PartialSchema} (hp : p.WellFormed) (hc : c.WellFormed) (hd : d.WellFormed) :
(∃ (err : LinkError), (do let t₁ ← link p c link t₁ d) = Except.error err) ↔ ∃ (err : LinkError), (do let t₂ ← link c d link p t₂) = Except.error err

Changing the grouping does not change whether linking fails.

Every well-formed partial schema has a complete linking extension.

A defined entity keeps its closed ancestor set after linking.