From my superficially understanding of malleability I think this is not possible.
First of all. The original public key is placed in transaction itself. So, it is not a requirement.
Second. Let us assume, that the transaction was signed with SIGHASH_ALL (this is default in all clients)
Third. We discuss pay-to-public-key scripts for tx inputs.
In such assumptions
For two valid transactions we can definitely say is one of them is mutated from other.
Some pseudocode:
if ( tx.valid ( ) && tx2.valid ( ) )
if ( tx1.p2pkhInputs ( ) && tx2.p2pkhInputs ( ) )
if ( tx1.signedWith_all ( ) && tx2.signedWith_all ( ) )
{
tx1a = removeScriptSig ( tx1 );
tx2a = removeScriptSig ( tx2 );
if ( tx1a.toBytes ( ) == tx2a.toBytes ( ) )
{
trace ( "tx1 is malled from tx2. or may be tx2 is malled from tx1. nobody knows" );
return;
}
}