Ticket #719 (closed bug: fixed)

Opened 4 months ago

Last modified 2 weeks ago

inducedFromMorphism does not preserve the overload relation

Reported by: maeder Owned by: maeder
Priority: major Milestone: 0.95
Component: hets Version: 0.93
Keywords: Cc: lschrode, till

Description (last modified by maeder) (diff)

In Basic/LinearAlgebra_I.casl VectorTuple (and ConstructVector) contain (unfortunately) n:Pos and n:Int via the formal parameter and the Array instantiation. Later on in Matrix

ConstructVector [Field][op nFac: Pos fit op n|-> nFac]

only n:Pos is renamed to nFac:Pos. n:Int is left unchanged and thus the overload relation is broken up.

(This error was discovered when trying to check the overload relation for inducedFromMorphism in #216, see also #586, #456)

Change History

Changed 4 months ago by maeder

  • status changed from new to closed
  • resolution set to fixed
  • description modified (diff)
  • summary changed from extendMorphism does preserve the overload relation to inducedFromMorphism does not preserve the overload relation

The problem could be solved by changeset:11995 (which also fixes the first point of #216)

Now a mapping op n:Pos |-> nFac:Pos (that was created by extendMorphism) also renames all ops in the overload relation

Changed 4 months ago by maeder

  • status changed from closed to reopened
  • resolution deleted

There is still a problem now in Calculi/Space/Intersection.casl:

  Matrix[view Field_in_ResidueClassField[op 2: Int fit n |-> 2]]
        [ops 2:Pos fit n |-> 2]

leads to the error message:

Fitting morphism leads to forbidden identifications:
{(op 2 : Int, op n : Int)}

Since "(op 2 : Pos, op n : Pos)" are legally identified, the above message seems unjustified, but if I replace "2" by something new (say "two") I get for:

  Matrix[Field and op two:Int][op two:Pos fit n |-> two]

the error:

Symbols shared between actual parameter and body
must be in formal parameter:
{op two : Int}

Checking the overload relation is not possible on the symbol level in source:trunk/Static/AnalysisStructured.hs

Maybe (n:Int) should also be part of the formal parameter or it should be hidden from the body of VectorTuple??

Changed 2 weeks ago by maeder

  • status changed from reopened to closed
  • resolution set to fixed

The above error was changed to a warning in changeset:12002

### Warning /home/maeder/Hets-lib/Calculi/Space/Intersection.casl:9.9-10.30,
Fitting morphism may lead to forbidden identifications:                     
{(op 2 : Int, op n : Int)}                                                  
Note: See TracTickets for help on using tickets.