Presumed Innocent

This article's plot summary may be too long or excessively detailed. Please help improve it by removing unnecessary details and making it more concise. (November 2015) (Learn how and when to remove this template message)
Rozat "Rusty" Sabich (Harrison Ford) is a prosecutor and the right-hand man of District Attorney Raymond Horgan (Dennehy). When his colleague, Carolyn Polhemus (Greta Scacchi), is found raped and murdered in her apartment, Raymond insists that Rusty takes charge of the investigation. The election for District Attorney is approaching and Tommy Molto (Joe Grifasi), the acting head of the homicide division, has left to join the rival campaign of Nico Della Guardia (Tom Mardirosian).
Rusty, a married man, faces a conflict of interest since he had an affair with Carolyn. When he had shown little ambition, and would have therefore been of little use in advancing her career, Carolyn abruptly dumped him. He has since made up with his wife, Barbara (Bonnie Bedelia), but is still obsessed with Carolyn.
Detective Greer (Tucker Smallwood) is initially in charge of the case, but Rusty has him replaced with his friend Detective Dan Lipranzer (John Spencer), whom he persuades to narrow the inquiry so that his relationship with Carolyn is left out. Rusty soon realizes that Tommy Molto is making his own inquiries. Aspects of the crime suggest that the killer knew police evidence-gathering procedures and covered up clues accordingly. Semen found in the victim's body contains only dead sperm. The killer's blood is Type Aâthe same as Rusty's.
When Nico wins the election, he and Tommy accuse Rusty of the crime and push to get evidence against him. They have Rusty's fingerprints on a beer glass from Carolyn's apartment, and fibers from his carpet at home match those found on her body. Lipranzer is removed from the case and Greer's inquiries uncover the affair. Raymond is furious with Rusty's handling of the case, and it turns out he, too, had been romantically involved with Carolyn at one time.
Rusty calls on "Sandy" Stern (RaÃºl JuliÃ¡), a top defense attorney, who agrees to take the case. At trial, it is revealed that the beer glass is missing. This was a crucial piece of the prosecution's case and Sandy persuades Judge Larren Lyttle (Paul Winfield) to keep this from the jury. Raymond testifies and perjures himself, claiming that Rusty insisted on handling the investigation, thus confirming the defense's claim of a frame-up.
Rusty discovers that Carolyn had acquired a file for a bribery case involving a man called Leon who paid a bribe to get his case thrown out of court. The probation officer who set the whole thing up was Carolyn and the deputy prosecutor in charge of the case was Tommy Molto. The thrust of Sandy's defense is that Tommy and Nico have set Rusty up as part of a cover-up of the bribery case. Lipranzer tracks down Leon and he reveals that the official who took the bribe was in fact Larren Lyttle, the judge handling Rusty's trial.
During the cross-examination of the coroner Dr. Kumagai (Sab Shimono), it is revealed that Carolyn had undergone a tubal ligation, making it impossible for her to become pregnant. She would have no reason to use the spermicidal contraceptive which was found on her. Sandy asserts that the only explanation for this discrepancy is that the fluid sample was not actually taken from Carolyn's body.
Based on the disappearance of the beer glass, the lack of motive, and the fact that the fluid sample was rendered meaningless, there is no direct evidence to tie Rusty to the murder. Judge Lyttle dismisses the charges.
Rusty confronts his attorney for bringing up the bribery file in the case, as Sandy most likely knew that it exposed Judge Lyttle. Sandy admits that he and Raymond knew Lyttle was taking bribes, and Carolyn was his courier. Lyttle offered his resignation, but Raymond believed that he was a brilliant judge and should be given another chance. Lipranzer reveals to Rusty that he has the beer glass, which he never returned to the evidence room. Molto signed it as "returned to evidence" when it was still at the lab and, by the time it was returned to Lipranzer, he had been removed from the case. Lipranzer decided to keep it in his desk drawer until someone asked for it, except nobody ever did. Rusty throws the beer glass into the river.
Some time later at home, Rusty comes across a small hatchet / crowbar with blood and hair on it; he realizes that they are Carolyn's. He washes the tool and confronts his wife. Referring to herself in the third person, Barbara relates how she committed the crime and that her motive had been Rusty's adulterous affair with Carolyn. Barbara had left enough evidence so that Rusty would know that it had been her, but she assumed that it would be filed under unsolved cases, not anticipating he would be charged with the murder.
In a final voice-over, Rusty says that the murder of Carolyn has been written off as unsolved, since trying two people for the same crime is "a practical impossibility" and he can not leave his child without a mother even if she could be tried. Rusty regrets that it was his own lust that caused his wife to commit murder.

Question: What is the explanation for the discrepancy?
Answer: The fluid sample was actually not taken from Carolyn's body.